home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Sprite 1984 - 1993
/
Sprite 1984 - 1993.iso
/
src
/
cmds
/
g++1.mips
/
cplus-tab.c
< prev
next >
Wrap
C/C++ Source or Header
|
1990-04-12
|
218KB
|
5,686 lines
/* A Bison parser, made from cplus-parse.y */
#define IDENTIFIER 258
#define TYPENAME 259
#define SCSPEC 260
#define TYPESPEC 261
#define TYPE_QUAL 262
#define CONSTANT 263
#define STRING 264
#define ELLIPSIS 265
#define SIZEOF 266
#define ENUM 267
#define IF 268
#define ELSE 269
#define WHILE 270
#define DO 271
#define FOR 272
#define SWITCH 273
#define CASE 274
#define DEFAULT 275
#define BREAK 276
#define CONTINUE 277
#define RETURN 278
#define GOTO 279
#define ASM 280
#define TYPEOF 281
#define ALIGNOF 282
#define ATTRIBUTE 283
#define AGGR 284
#define DELETE 285
#define NEW 286
#define OVERLOAD 287
#define PRIVATE 288
#define PUBLIC 289
#define PROTECTED 290
#define THIS 291
#define OPERATOR 292
#define DYNAMIC 293
#define POINTSAT_LEFT_RIGHT 294
#define LEFT_RIGHT 295
#define SCOPE 296
#define EMPTY 297
#define TYPENAME_COLON 298
#define ASSIGN 299
#define RANGE 300
#define OROR 301
#define ANDAND 302
#define MIN_MAX 303
#define EQCOMPARE 304
#define ARITHCOMPARE 305
#define LSHIFT 306
#define RSHIFT 307
#define UNARY 308
#define PLUSPLUS 309
#define MINUSMINUS 310
#define HYPERUNARY 311
#define PAREN_STAR_PAREN 312
#define PAREN_X_SCOPE_STAR_PAREN 313
#define PAREN_X_SCOPE_REF_PAREN 314
#define POINTSAT 315
#define RAISE 316
#define RAISES 317
#define RERAISE 318
#define TRY 319
#define EXCEPT 320
#define CATCH 321
#define TYPENAME_SCOPE 322
#define TYPENAME_ELLIPSIS 323
#define PRE_PARSED_FUNCTION_DECL 324
#define EXTERN_LANG_STRING 325
#define ALL 326
#line 30 "cplus-parse.y"
#include "config.h"
#include "tree.h"
#include "input.h"
#include "cplus-parse.h"
#include "cplus-tree.h"
#include "assert.h"
/* C++ extensions */
extern tree ridpointers[]; /* need this up here */
extern tree void_list_node;
#include <stdio.h>
#include <errno.h>
#ifndef errno
extern int errno;
#endif
extern int end_of_file;
void yyerror ();
/* Contains error message to give if user tries to declare
a variable where one does not belong. */
static char *stmt_decl_msg = 0;
#ifndef YYDEBUG
/* Cause the `yydebug' variable to be defined. */
int yydebug;
#endif
/* Cons up an empty parameter list. */
#ifdef __GNU__
__inline
#endif
static tree
empty_parms ()
{
tree parms;
if (strict_prototype)
parms = void_list_node;
else
parms = NULL_TREE;
return parms;
}
void yyhook ();
#line 83 "cplus-parse.y"
typedef union {long itype; tree ttype; enum tree_code code; } YYSTYPE;
#line 199 "cplus-parse.y"
/* the declaration found for the last IDENTIFIER token read in.
yylex must look this up to detect typedefs, which get token type TYPENAME,
so it is left around in case the identifier is not a typedef but is
used in a context which makes it a reference to a variable. */
tree lastiddecl;
tree make_pointer_declarator (), make_reference_declarator ();
tree combine_strings ();
void reinit_parse_for_function ();
void reinit_parse_for_method ();
/* List of types and structure classes of the current declaration. */
tree current_declspecs;
int undeclared_variable_notice; /* 1 if we explained undeclared var errors. */
int yylex ();
extern FILE *finput;
#ifndef YYLTYPE
typedef
struct yyltype
{
int timestamp;
int first_line;
int first_column;
int last_line;
int last_column;
char *text;
}
yyltype;
#define YYLTYPE yyltype
#endif
#define YYACCEPT return(0)
#define YYABORT return(1)
#define YYERROR goto yyerrlab
#include <stdio.h>
#ifndef __STDC__
#define const
#endif
#define YYFINAL 1041
#define YYFLAG -32768
#define YYNTBASE 94
#define YYTRANSLATE(x) ((unsigned)(x) <= 326 ? yytranslate[x] : 237)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 92, 2, 2, 2, 65, 55, 2, 75,
88, 63, 61, 45, 62, 74, 64, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 49, 89, 2,
47, 2, 48, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
76, 2, 93, 54, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 44, 53, 90, 91, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
36, 37, 38, 39, 40, 41, 42, 43, 46, 50,
51, 52, 56, 57, 58, 59, 60, 66, 67, 68,
69, 70, 71, 72, 73, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, 87
};
static const short yyrline[] = { 0,
222, 223, 231, 233, 233, 234, 236, 239, 241, 242,
247, 249, 251, 254, 259, 264, 267, 269, 273, 277,
283, 286, 291, 297, 304, 306, 311, 312, 313, 316,
329, 341, 343, 345, 347, 349, 351, 355, 360, 364,
368, 372, 376, 382, 392, 401, 408, 417, 426, 433,
442, 450, 463, 476, 491, 498, 527, 530, 532, 533,
538, 545, 552, 556, 558, 583, 609, 611, 614, 616,
617, 619, 623, 625, 627, 629, 631, 635, 637, 639,
643, 645, 647, 649, 651, 655, 658, 666, 669, 672,
675, 677, 681, 689, 691, 693, 695, 700, 713, 715,
748, 751, 753, 755, 757, 759, 762, 766, 791, 805,
807, 810, 827, 829, 831, 833, 835, 837, 839, 841,
843, 845, 847, 849, 851, 853, 855, 857, 859, 861,
863, 871, 873, 875, 877, 880, 884, 968, 978, 979,
981, 983, 985, 993, 1005, 1007, 1009, 1042, 1044, 1060,
1062, 1066, 1089, 1127, 1129, 1131, 1162, 1170, 1172, 1174,
1177, 1180, 1183, 1185, 1189, 1192, 1194, 1201, 1205, 1207,
1209, 1211, 1213, 1215, 1217, 1225, 1227, 1229, 1231, 1233,
1243, 1245, 1253, 1255, 1259, 1268, 1287, 1293, 1300, 1308,
1311, 1318, 1323, 1330, 1332, 1339, 1342, 1344, 1346, 1350,
1354, 1356, 1358, 1366, 1369, 1371, 1373, 1384, 1387, 1389,
1391, 1395, 1398, 1406, 1407, 1408, 1409, 1413, 1421, 1422,
1423, 1426, 1429, 1431, 1433, 1437, 1443, 1445, 1448, 1450,
1453, 1456, 1464, 1471, 1473, 1481, 1486, 1487, 1492, 1499,
1501, 1511, 1514, 1519, 1520, 1524, 1528, 1536, 1542, 1545,
1549, 1551, 1556, 1559, 1562, 1568, 1571, 1575, 1579, 1583,
1586, 1590, 1594, 1609, 1622, 1626, 1628, 1631, 1633, 1637,
1639, 1641, 1643, 1646, 1649, 1652, 1656, 1659, 1661, 1663,
1666, 1670, 1675, 1679, 1683, 1689, 1692, 1694, 1698, 1703,
1708, 1717, 1730, 1733, 1735, 1737, 1739, 1741, 1742, 1743,
1746, 1749, 1752, 1757, 1802, 1804, 1808, 1810, 1814, 1817,
1819, 1823, 1825, 1829, 1831, 1835, 1837, 1841, 1846, 1848,
1850, 1852, 1858, 1861, 1862, 1873, 1877, 1880, 1883, 1887,
1890, 1892, 1894, 1902, 1904, 1908, 1911, 1915, 1918, 1922,
1925, 1928, 1931, 1935, 1938, 1946, 1948, 1952, 1955, 1957,
1959, 1961, 1963, 1965, 1967, 1969, 1972, 1975, 1978, 1980,
1982, 1984, 1987, 1990, 1992, 1994, 1996, 1998, 2000, 2002,
2005, 2008, 2011, 2013, 2020, 2023, 2025, 2027, 2029, 2031,
2033, 2035, 2037, 2039, 2043, 2046, 2049, 2052, 2057, 2063,
2066, 2069, 2071, 2074, 2077, 2080, 2082, 2086, 2088, 2089,
2093, 2098, 2100, 2102, 2105, 2108, 2111, 2113, 2115, 2117,
2119, 2121, 2123, 2125, 2127, 2129, 2131, 2133, 2135, 2137,
2145, 2147, 2148, 2151, 2158, 2170, 2173, 2176, 2178, 2186,
2193, 2199, 2202, 2205, 2210, 2221, 2225, 2228, 2232, 2236,
2240, 2244, 2249, 2252, 2258, 2263, 2266, 2272, 2279, 2283,
2286, 2293, 2309, 2317, 2321, 2365, 2365, 2441, 2441, 2452,
2452, 2456, 2460, 2463, 2468, 2475, 2484, 2493, 2502, 2508,
2514, 2515, 2520, 2521, 2525, 2528, 2531, 2544, 2559, 2591,
2603, 2605, 2610, 2617, 2619, 2619, 2622, 2641, 2644, 2663,
2674, 2677, 2679, 2683, 2686, 2688, 2690, 2696, 2701, 2707,
2710, 2711, 2717, 2719, 2722, 2724, 2728, 2733, 2736, 2745,
2752, 2757, 2763, 2768, 2772, 2777, 2782, 2796, 2799, 2801,
2807, 2811, 2814, 2817, 2822, 2826, 2830, 2836, 2844, 2847,
2851, 2854, 2858, 2861, 2863, 2865, 2867, 2869, 2871, 2874,
2876, 2883, 2886, 2888, 2890, 2892, 2894, 2896, 2898, 2900,
2902, 2904, 2906, 2908, 2917, 2919, 2921, 2923, 2925, 2927,
2929, 2931, 2933, 2935, 2937, 2957, 2969, 2981, 2994, 3010,
3014
};
static const char * const yytname[] = { 0,
"error","$illegal.","IDENTIFIER","TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS",
"SIZEOF","ENUM","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT",
"BREAK","CONTINUE","RETURN","GOTO","ASM","TYPEOF","ALIGNOF","ATTRIBUTE","AGGR","DELETE",
"NEW","OVERLOAD","PRIVATE","PUBLIC","PROTECTED","THIS","OPERATOR","DYNAMIC","POINTSAT_LEFT_RIGHT","LEFT_RIGHT",
"SCOPE","EMPTY","TYPENAME_COLON","'{'","','","ASSIGN","'='","'?'","':'","RANGE",
"OROR","ANDAND","'|'","'^'","'&'","MIN_MAX","EQCOMPARE","ARITHCOMPARE","LSHIFT","RSHIFT",
"'+'","'-'","'*'","'/'","'%'","UNARY","PLUSPLUS","MINUSMINUS","HYPERUNARY","PAREN_STAR_PAREN",
"PAREN_X_SCOPE_STAR_PAREN","PAREN_X_SCOPE_REF_PAREN","POINTSAT","'.'","'('","'['","RAISE","RAISES","RERAISE","TRY",
"EXCEPT","CATCH","TYPENAME_SCOPE","TYPENAME_ELLIPSIS","PRE_PARSED_FUNCTION_DECL","EXTERN_LANG_STRING","ALL","')'","';'","'}'",
"'~'","'!'","']'","program"
};
static const short yyr1[] = { 0,
94, 94, 96, 95, 97, 95, 98, 98, 98, 98,
98, 98, 98, 98, 99, 100, 101, 101, 102, 103,
103, 103, 103, 103, 103, 103, 103, 103, 103, 104,
104, 104, 104, 104, 104, 104, 104, 105, 105, 105,
105, 105, 105, 106, 106, 106, 106, 106, 106, 106,
107, 108, 108, 108, 109, 110, 111, 111, 111, 111,
112, 112, 112, 112, 112, 112, 113, 113, 114, 114,
114, 114, 114, 114, 114, 114, 114, 115, 115, 115,
116, 116, 116, 116, 116, 117, 117, 118, 118, 119,
119, 119, 120, 120, 120, 120, 120, 120, 120, 120,
120, 120, 120, 120, 120, 120, 120, 120, 120, 121,
121, 121, 122, 122, 122, 122, 122, 122, 122, 122,
122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
122, 122, 122, 122, 122, 122, 123, 123, 123, 123,
123, 123, 124, 123, 123, 123, 123, 123, 123, 123,
123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
123, 123, 123, 123, 125, 125, 126, 125, 125, 125,
125, 125, 125, 125, 125, 127, 127, 127, 127, 127,
128, 128, 129, 129, 130, 131, 131, 132, 132, 132,
132, 132, 132, 133, 133, 134, 134, 134, 134, 135,
135, 135, 135, 136, 136, 136, 136, 137, 137, 137,
137, 138, 138, 139, 139, 139, 139, 139, 140, 140,
140, 141, 141, 141, 141, 141, 142, 142, 143, 143,
144, 144, 146, 145, 145, 148, 147, 147, 150, 149,
149, 151, 151, 152, 152, 153, 153, 153, 154, 154,
155, 155, 155, 155, 155, 156, 156, 158, 157, 159,
157, 157, 157, 157, 157, 160, 160, 161, 161, 162,
162, 162, 162, 162, 162, 162, 163, 163, 163, 163,
163, 164, 164, 164, 164, 165, 165, 165, 165, 165,
165, 166, 167, 167, 167, 167, 167, 167, 167, 167,
168, 168, 168, 169, 169, 169, 169, 169, 169, 169,
169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
169, 169, 170, 170, 170, 171, 171, 171, 171, 172,
172, 172, 172, 173, 173, 174, 174, 175, 175, 176,
176, 177, 177, 178, 178, 180, 179, 181, 181, 181,
181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
181, 181, 182, 182, 182, 182, 182, 182, 182, 182,
182, 182, 182, 182, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
183, 183, 183, 183, 183, 183, 183, 184, 184, 184,
185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
186, 186, 186, 187, 188, 189, 189, 190, 190, 190,
192, 191, 193, 193, 193, 194, 193, 193, 195, 196,
193, 197, 198, 193, 199, 200, 201, 193, 202, 203,
204, 193, 205, 193, 206, 193, 207, 193, 208, 193,
193, 193, 193, 193, 193, 193, 193, 193, 193, 209,
193, 210, 193, 193, 193, 193, 211, 193, 193, 193,
212, 212, 212, 214, 213, 215, 216, 215, 217, 215,
218, 218, 218, 219, 219, 219, 219, 220, 220, 221,
221, 221, 222, 222, 223, 223, 224, 225, 225, 226,
226, 226, 226, 226, 226, 226, 226, 227, 227, 227,
228, 228, 228, 228, 229, 230, 231, 231, 232, 232,
233, 233, 234, 234, 234, 234, 234, 234, 234, 235,
235, 236, 236, 236, 236, 236, 236, 236, 236, 236,
236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
236
};
static const short yyr2[] = { 0,
0, 1, 0, 2, 0, 3, 1, 1, 1, 5,
4, 3, 2, 2, 1, 3, 1, 3, 0, 3,
3, 3, 3, 3, 2, 2, 2, 2, 1, 3,
4, 3, 5, 4, 3, 3, 3, 3, 3, 3,
7, 5, 1, 6, 4, 3, 6, 4, 3, 3,
2, 2, 4, 2, 3, 0, 0, 1, 3, 2,
3, 1, 4, 2, 5, 3, 1, 1, 1, 1,
2, 1, 2, 2, 2, 3, 3, 1, 2, 2,
1, 1, 1, 1, 1, 1, 1, 0, 1, 1,
3, 3, 1, 2, 2, 2, 2, 2, 4, 2,
4, 2, 5, 3, 4, 4, 2, 2, 5, 1,
4, 7, 1, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 5, 3,
3, 3, 3, 3, 5, 2, 1, 1, 1, 1,
3, 3, 0, 4, 4, 2, 4, 2, 3, 2,
2, 1, 5, 4, 2, 2, 2, 2, 5, 3,
5, 3, 6, 4, 3, 3, 0, 4, 4, 2,
4, 2, 2, 2, 2, 1, 4, 2, 5, 2,
1, 2, 1, 2, 0, 2, 2, 3, 3, 3,
3, 2, 2, 1, 1, 1, 2, 2, 3, 1,
1, 2, 2, 2, 2, 2, 2, 1, 2, 2,
3, 1, 2, 1, 1, 1, 4, 4, 1, 1,
1, 2, 2, 2, 5, 5, 1, 3, 1, 3,
0, 4, 0, 7, 4, 0, 7, 4, 0, 7,
4, 0, 6, 1, 3, 1, 4, 4, 1, 3,
1, 2, 3, 4, 1, 1, 3, 0, 7, 0,
6, 2, 4, 5, 1, 0, 1, 0, 1, 1,
2, 5, 2, 2, 2, 2, 1, 2, 4, 2,
3, 1, 2, 3, 4, 1, 1, 1, 2, 2,
2, 1, 0, 1, 4, 4, 4, 3, 3, 3,
1, 2, 2, 3, 5, 5, 3, 3, 3, 3,
3, 5, 5, 3, 3, 3, 3, 1, 2, 2,
4, 4, 0, 1, 3, 4, 3, 2, 2, 4,
3, 2, 2, 1, 3, 1, 3, 2, 2, 0,
1, 2, 2, 0, 2, 0, 2, 5, 5, 3,
5, 4, 3, 4, 5, 1, 1, 1, 5, 3,
3, 1, 5, 5, 3, 5, 4, 3, 4, 1,
1, 1, 3, 3, 5, 5, 3, 5, 3, 3,
3, 4, 3, 1, 1, 2, 2, 2, 3, 3,
3, 2, 7, 7, 5, 7, 3, 1, 2, 2,
3, 3, 2, 1, 1, 1, 3, 2, 5, 3,
4, 3, 4, 2, 3, 2, 3, 4, 2, 3,
1, 2, 2, 2, 0, 1, 2, 2, 4, 4,
0, 6, 1, 1, 2, 0, 4, 1, 0, 0,
7, 0, 0, 9, 0, 0, 0, 9, 0, 0,
0, 9, 0, 6, 0, 5, 0, 7, 0, 4,
2, 2, 2, 3, 6, 8, 10, 12, 3, 0,
4, 0, 3, 1, 6, 4, 0, 7, 3, 1,
3, 3, 3, 0, 4, 0, 0, 4, 0, 4,
3, 4, 4, 3, 4, 6, 6, 0, 1, 0,
1, 1, 0, 1, 1, 3, 4, 1, 3, 0,
1, 3, 2, 1, 1, 2, 2, 2, 4, 4,
3, 3, 3, 3, 1, 0, 2, 2, 0, 2,
0, 2, 1, 1, 1, 2, 2, 2, 2, 1,
3, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 3, 2, 2, 3, 2, 3, 2, 2, 3,
2
};
static const short yydefact[] = { 3,
5, 0, 0, 0, 0, 0, 43, 15, 29, 4,
0, 9, 0, 8, 7, 185, 0, 0, 196, 6,
27, 28, 0, 17, 0, 3, 14, 13, 384, 224,
205, 222, 204, 0, 0, 270, 0, 0, 0, 344,
344, 344, 0, 344, 0, 0, 229, 223, 277, 265,
0, 385, 0, 56, 529, 185, 0, 0, 362, 344,
344, 356, 357, 358, 19, 26, 0, 0, 227, 194,
195, 216, 207, 214, 206, 0, 25, 0, 197, 0,
215, 0, 201, 219, 220, 198, 200, 221, 183, 0,
0, 16, 12, 5, 344, 19, 67, 68, 260, 262,
19, 571, 569, 568, 344, 566, 553, 554, 0, 560,
559, 548, 549, 547, 563, 552, 551, 555, 556, 545,
546, 542, 543, 544, 557, 558, 564, 0, 550, 561,
0, 340, 208, 0, 271, 0, 0, 388, 525, 0,
0, 0, 0, 392, 525, 0, 387, 386, 0, 0,
20, 67, 273, 274, 275, 276, 280, 278, 292, 0,
37, 344, 0, 346, 0, 40, 51, 57, 54, 0,
19, 52, 185, 0, 0, 0, 425, 30, 426, 32,
0, 0, 344, 344, 0, 35, 24, 38, 0, 23,
344, 0, 346, 19, 22, 199, 21, 36, 39, 203,
202, 184, 0, 18, 11, 531, 514, 515, 0, 526,
526, 0, 511, 529, 0, 258, 137, 139, 19, 19,
181, 176, 152, 0, 19, 82, 81, 19, 83, 84,
0, 398, 19, 85, 0, 19, 0, 86, 110, 113,
87, 93, 19, 19, 140, 0, 340, 208, 0, 340,
0, 138, 565, 562, 567, 224, 342, 0, 344, 344,
344, 404, 405, 406, 19, 346, 344, 570, 341, 210,
212, 216, 343, 209, 0, 389, 345, 397, 381, 380,
379, 391, 0, 390, 531, 230, 0, 288, 287, 286,
282, 281, 0, 318, 19, 0, 0, 323, 323, 0,
0, 301, 377, 0, 0, 0, 90, 196, 0, 383,
0, 19, 534, 535, 0, 533, 0, 540, 532, 0,
242, 67, 62, 19, 0, 58, 0, 0, 255, 0,
0, 251, 0, 530, 0, 89, 0, 31, 34, 427,
428, 0, 361, 360, 0, 0, 344, 344, 370, 371,
372, 19, 0, 242, 228, 350, 0, 0, 0, 353,
0, 0, 0, 10, 42, 340, 340, 344, 513, 19,
517, 516, 518, 336, 268, 334, 0, 399, 0, 98,
0, 0, 100, 178, 19, 156, 0, 180, 182, 157,
95, 94, 0, 0, 0, 0, 96, 342, 97, 225,
0, 19, 19, 0, 19, 19, 19, 19, 19, 19,
19, 19, 19, 19, 19, 19, 19, 19, 19, 146,
150, 151, 187, 186, 19, 19, 107, 19, 208, 102,
19, 108, 69, 70, 78, 0, 19, 19, 0, 0,
148, 0, 19, 136, 0, 72, 338, 155, 19, 226,
339, 69, 400, 158, 344, 414, 408, 403, 0, 0,
416, 0, 419, 344, 19, 346, 213, 211, 0, 344,
0, 231, 279, 0, 291, 290, 289, 283, 0, 531,
320, 319, 384, 344, 19, 19, 19, 531, 0, 324,
344, 19, 531, 0, 0, 0, 0, 263, 303, 302,
344, 204, 344, 344, 382, 347, 536, 537, 538, 539,
0, 0, 0, 241, 0, 60, 0, 64, 19, 0,
252, 256, 0, 0, 53, 33, 0, 137, 0, 439,
442, 0, 0, 19, 0, 0, 0, 19, 0, 498,
472, 0, 0, 474, 0, 434, 0, 0, 0, 433,
438, 421, 480, 0, 445, 449, 0, 0, 0, 0,
0, 344, 0, 346, 354, 235, 344, 344, 344, 352,
217, 218, 384, 344, 344, 344, 19, 344, 522, 521,
524, 523, 531, 512, 340, 529, 529, 19, 269, 0,
268, 0, 0, 0, 0, 142, 141, 0, 19, 19,
92, 91, 131, 130, 502, 501, 0, 128, 127, 125,
126, 124, 123, 122, 121, 119, 120, 114, 115, 116,
117, 118, 0, 0, 0, 104, 19, 0, 0, 80,
174, 175, 133, 132, 0, 0, 0, 0, 79, 71,
162, 19, 73, 74, 0, 75, 134, 170, 172, 173,
19, 19, 149, 0, 160, 19, 420, 407, 402, 401,
344, 415, 417, 410, 0, 412, 0, 272, 395, 0,
0, 0, 242, 284, 0, 316, 317, 50, 19, 307,
308, 531, 328, 329, 0, 0, 231, 0, 304, 314,
315, 531, 0, 310, 231, 309, 311, 0, 0, 0,
264, 378, 375, 376, 541, 0, 0, 239, 61, 59,
0, 66, 19, 0, 253, 430, 470, 19, 0, 19,
0, 19, 0, 459, 461, 462, 463, 0, 0, 499,
0, 19, 0, 484, 435, 192, 531, 0, 193, 0,
0, 531, 0, 429, 423, 422, 436, 0, 0, 0,
0, 0, 0, 359, 355, 344, 344, 19, 374, 373,
0, 365, 0, 0, 0, 368, 0, 233, 351, 348,
349, 408, 403, 419, 41, 528, 527, 519, 520, 337,
335, 261, 0, 99, 101, 0, 177, 144, 0, 111,
0, 19, 145, 147, 106, 0, 105, 19, 166, 165,
0, 19, 0, 76, 77, 0, 0, 164, 19, 154,
0, 418, 413, 344, 411, 344, 344, 344, 238, 285,
321, 322, 327, 45, 344, 529, 384, 19, 19, 531,
325, 48, 344, 0, 0, 0, 232, 0, 0, 63,
0, 254, 257, 19, 0, 19, 0, 0, 425, 491,
0, 494, 0, 455, 19, 19, 464, 469, 0, 473,
0, 19, 481, 425, 189, 231, 188, 191, 190, 231,
424, 19, 479, 0, 483, 482, 0, 0, 0, 0,
344, 344, 369, 344, 344, 344, 367, 0, 259, 179,
266, 153, 129, 103, 109, 168, 135, 161, 169, 171,
0, 159, 409, 396, 393, 394, 236, 305, 306, 531,
326, 19, 332, 333, 231, 312, 313, 531, 246, 0,
244, 240, 65, 471, 431, 0, 443, 495, 493, 0,
492, 453, 19, 0, 460, 0, 476, 0, 485, 437,
477, 446, 450, 0, 0, 366, 363, 364, 234, 0,
0, 163, 0, 44, 331, 529, 47, 0, 0, 0,
19, 440, 0, 0, 0, 19, 456, 457, 503, 0,
0, 486, 0, 0, 112, 237, 330, 249, 0, 0,
245, 243, 432, 19, 19, 497, 496, 454, 19, 0,
0, 504, 505, 465, 475, 0, 0, 0, 247, 0,
248, 441, 0, 458, 19, 503, 0, 0, 489, 478,
487, 447, 451, 250, 0, 0, 0, 466, 506, 0,
0, 19, 19, 444, 507, 0, 0, 490, 488, 448,
452, 508, 0, 467, 0, 0, 509, 468, 0, 0,
0
};
static const short yydefgoto[] = { 1039,
1, 2, 3, 10, 11, 12, 25, 331, 14, 15,
16, 297, 55, 56, 57, 168, 325, 326, 138, 441,
442, 236, 545, 335, 238, 239, 240, 241, 242, 395,
444, 637, 243, 244, 245, 58, 246, 546, 285, 547,
86, 548, 247, 270, 79, 271, 333, 68, 46, 321,
69, 888, 286, 953, 47, 839, 514, 920, 921, 980,
522, 523, 88, 377, 215, 951, 590, 49, 50, 292,
293, 160, 300, 301, 302, 489, 490, 831, 375, 376,
249, 268, 250, 456, 311, 312, 70, 353, 71, 251,
269, 549, 745, 342, 178, 550, 551, 961, 552, 872,
719, 984, 720, 963, 752, 973, 1022, 753, 974, 1023,
966, 933, 989, 856, 844, 732, 972, 553, 554, 864,
996, 1021, 1020, 555, 556, 731, 607, 991, 992, 993,
1033, 460, 213, 214, 146, 366, 587, 172, 166, 318,
319, 252
};
static const short yypact[] = { 67,
76, 3328, 3328, 405, -11, 85,-32768,-32768,-32768,-32768,
3585,-32768, 4132,-32768,-32768, 209, 4326, 4031, 1047,-32768,
-32768,-32768, 135,-32768, 121, 87,-32768,-32768,-32768, 119,
-32768,-32768,-32768, 175, 111,-32768, 2189, 48, 252,-32768,
-32768,-32768, 559, 223, 348, 208,-32768,-32768, 573, 290,
64,-32768, 262,-32768, 356, 136, 192, 192,-32768,-32768,
-32768,-32768,-32768,-32768, 915,-32768, 186, 225,-32768, 333,
430, 907,-32768,-32768,-32768, 363,-32768, 205, 1047, 247,
-32768, 4393,-32768,-32768,-32768, 1124,-32768,-32768,-32768, 46,
420,-32768,-32768, 366,-32768, 81,-32768,-32768,-32768, 427,
3905,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 400,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768, 371,-32768,-32768,
649, 939, 591, 709,-32768, 135, 622,-32768, 467, 559,
834, 834, 303,-32768, 834, 477,-32768,-32768, 622, 4420,
-32768, 439,-32768,-32768,-32768,-32768, 763,-32768,-32768, 3389,
-32768,-32768, 1231, 404, 65, 234,-32768, 79,-32768, 2657,
3727,-32768,-32768, 192, 192, 460, 421,-32768,-32768,-32768,
629, 629,-32768,-32768, 890,-32768,-32768, 234, 4420,-32768,
-32768, 1422, 444, 3905,-32768, 1124,-32768,-32768, 234,-32768,
-32768,-32768, 459,-32768,-32768, 55,-32768,-32768, 1031,-32768,
1189, 476, 153, 523, 622,-32768, 540,-32768, 3948, 3991,
-32768, 103,-32768, 509, 3905,-32768,-32768, 3905,-32768,-32768,
2727,-32768, 3905,-32768, 1495, 3905, 499, 539,-32768,-32768,
4559, 737, 279, 3770, 584, 1297, 939, 642, 516, 4481,
92,-32768, 467,-32768,-32768,-32768,-32768, 568,-32768,-32768,
-32768,-32768,-32768,-32768, 1322, 537,-32768,-32768, 496, 591,
-32768,-32768,-32768, 591, 61,-32768,-32768,-32768, 430, 430,
-32768,-32768, 221,-32768, 534,-32768, 763,-32768,-32768,-32768,
-32768, 590, 873,-32768, 3905, 4179, 30, 4242, 1142, 38,
3121,-32768, 467, 553, 1409, 227, 4583, 639, 555,-32768,
554, 3905, 540,-32768, 634,-32768, 113,-32768, 607, 582,
632, 540,-32768, 3727, 233,-32768, 281, 123,-32768, 1555,
1542, 4583, 342,-32768, 574, 539, 192,-32768,-32768,-32768,
-32768, 1933, 333, 333, 629, 629,-32768,-32768,-32768,-32768,
-32768,-32768, 319, 632,-32768, 467, 579, 272, 586,-32768,
593, 595, 603,-32768,-32768, 4426, 4426,-32768,-32768, 685,
-32768,-32768,-32768, 659, 678,-32768, 622,-32768, 2727,-32768,
98, 2727,-32768, 650, 3905,-32768, 448,-32768,-32768,-32768,
-32768,-32768, 648, 651, 460, 658,-32768, 673,-32768,-32768,
3077, 3905, 3905, 2797, 3905, 3905, 3905, 3905, 3905, 3905,
3905, 3905, 3905, 3905, 3905, 3905, 3905, 3905, 3905,-32768,
-32768,-32768,-32768,-32768, 3727, 3905,-32768,-32768, 752, 710,
3905,-32768, 540,-32768, 725, 463, 3905, 3905, 2867, 401,
432, 77, 3905, 456, 92,-32768,-32768,-32768, 3727,-32768,
-32768,-32768,-32768, 452,-32768, 467, 700, 700, 336, 686,
-32768, 691, 700,-32768, 81, 692,-32768, 591, 749,-32768,
2263, 754, 590, 763,-32768,-32768,-32768,-32768, 4538, 408,
-32768,-32768, 733, 212, 3905, 3905, 3168, 534, 253,-32768,
219, 3168, 246, 41, 738, 739, 742, 704,-32768,-32768,
-32768, 673,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
65, 135, 719, 756, 713,-32768, 79,-32768, 3727, 470,
-32768,-32768, 154, 673,-32768,-32768, 718, 17, 740,-32768,
-32768, 743, 744, 3905, 771, 734, 736, 3813, 622, 823,
-32768, 65, 787,-32768, 746,-32768, 4373, 4058, 1649,-32768,
822,-32768, 166, 2025,-32768,-32768, 359, 370, 458, 458,
890,-32768, 2355, 747,-32768, 797,-32768,-32768,-32768,-32768,
-32768,-32768, 568, 252,-32768,-32768, 4189, 223,-32768, 430,
-32768, 430, 55,-32768, 4105, 523, 523, 3905, 622, 758,
678, 765, 768, 135, 176,-32768,-32768, 773, 3856, 3727,
-32768, 4583, 4583, 4583,-32768,-32768, 802, 4615, 2252, 2314,
2342, 1638, 1411, 1003, 1219, 851, 851, 454, 454,-32768,
-32768,-32768, 777, 775, 778,-32768, 3727, 2657, 776,-32768,
-32768,-32768,-32768,-32768, 784, 785, 460, 794,-32768,-32768,
-32768, 3727, 540,-32768, 53,-32768,-32768,-32768,-32768,-32768,
3727, 3905, 519, 796,-32768, 3727, 700, 496, 496,-32768,
-32768,-32768, 496, 467, 798,-32768, 792,-32768, 467, 800,
274, 807, 632,-32768, 873,-32768,-32768, 575, 3905,-32768,
-32768, 55, 4583, 4583, 4508, 808, 500, 4252,-32768,-32768,
-32768, 55, 811,-32768, 564,-32768,-32768, 3436, 3483, 3530,
-32768, 467, 467, 467,-32768, 88, 827,-32768,-32768,-32768,
816,-32768, 3727, 2517,-32768,-32768,-32768, 3905, 830, 3664,
2447, 3905, 640,-32768,-32768,-32768,-32768, 819, 831,-32768,
846, 3664, 542, 833,-32768,-32768, 266, 258,-32768, 835,
268, 250, 837,-32768,-32768,-32768,-32768, 65, 622, 839,
1749, 2937, 2937,-32768,-32768,-32768,-32768, 109, 333, 333,
385, 467, 842, 282, 845,-32768, 841,-32768, 467, 467,
467, 3575, 3575, 4299,-32768,-32768, 430,-32768,-32768, 4583,
-32768,-32768, 850,-32768,-32768, 96,-32768,-32768, 2657,-32768,
855, 3905,-32768,-32768,-32768, 858,-32768, 3905,-32768,-32768,
860, 3905, 861,-32768,-32768, 862, 864,-32768, 3727,-32768,
880, 496, 467,-32768,-32768,-32768,-32768,-32768, 922,-32768,
-32768,-32768, 4583,-32768, 644, 523, 924, 3905, 3905, 534,
-32768,-32768, 655, 3187, 3234, 3281,-32768, 968, 2657,-32768,
886,-32768,-32768, 3664, 887, 3905, 965, 892, 899,-32768,
902,-32768, 908,-32768, 3905, 3664,-32768,-32768, 135,-32768,
912, 3727,-32768,-32768,-32768, 754,-32768,-32768,-32768, 754,
-32768, 3664, 607, 959,-32768,-32768, 918, 919, 458, 458,
-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2657,-32768,-32768,
967,-32768, 4601,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
916,-32768, 467, 467, 467, 467,-32768,-32768,-32768, 55,
-32768, 3905, 4583, 4583, 754,-32768,-32768, 55, 941, 286,
-32768,-32768,-32768,-32768,-32768, 929,-32768,-32768,-32768, 2117,
-32768,-32768, 3664, 974,-32768, 94,-32768, 936,-32768,-32768,
-32768,-32768,-32768, 458, 458, 467, 467, 467,-32768, 2587,
935,-32768, 2657,-32768, 4583, 523,-32768, 598, 968, 938,
3664,-32768, 953, 940, 1841, 3664,-32768,-32768, 1020, 950,
952,-32768, 3007, 3007,-32768,-32768,-32768,-32768, 954, 304,
-32768,-32768,-32768, 3664, 3905,-32768,-32768,-32768, 3664, 969,
124, 1004,-32768,-32768,-32768, 197, 960, 970,-32768, 1053,
-32768,-32768, 982,-32768, 3905, 1020, 986, 1020,-32768,-32768,
-32768,-32768,-32768,-32768, 989, 991, 194,-32768,-32768, 460,
460, 3664, 3664,-32768,-32768, 1071, 995,-32768,-32768,-32768,
-32768,-32768, 318,-32768, 1077, 998,-32768,-32768, 1093, 1109,
-32768
};
static const short yypgoto[] = {-32768,
1084,-32768,-32768, 1108,-32768,-32768,-32768, -2, 1102, 1110,
-32768,-32768,-32768,-32768, 1063,-32768,-32768, 605, 790, -241,
-32768, 877, -94, -199, 727, 531, -208, 689,-32768,-32768,
-32768,-32768, -190, -174, -21, -27, -187, 403, 6, 28,
1049, 237, 1096, 863, -80, -1, 11, 587, -13, -161,
-32768,-32768, 946,-32768,-32768,-32768, -312,-32768, 181,-32768,
-151, 355, 137,-32768,-32768,-32768, 560,-32768,-32768, 868,
687,-32768,-32768, -143, -293, 866,-32768,-32768, 782, 577,
-133, -210, 1126, 325, -148,-32768, -138, 608, 273, -153,
-206, -528,-32768, -789, -7, -54,-32768,-32768, 66,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768, -700, 164,-32768, 165,
-32768, -12,-32768, 814, 1132, 966,-32768, -203, -61, -495,
433, 975
};
#define YYLAST 4680
static const short yytable[] = { 13,
13, 90, 179, 179, 80, 188, 237, 500, 13, 454,
373, 317, 19, 19, 328, 705, 391, 87, 334, 392,
199, 19, 67, 78, 397, 751, 354, 399, 175, 17,
17, 381, 381, 388, 131, 432, 447, 381, 17, 451,
381, 566, 343, 344, 361, 381, 733, 133, 381, 389,
180, 877, 878, 274, 202, 804, 381, 378, 459, 930,
363, 277, 185, 23, 161, 717, -1, 313, 314, 202,
495, 496, 497, 481, 939, -2, 135, 87, 482, 643,
644, 322, 98, 212, 201, 688, -531, 24, -531, 37,
207, -531, 445, 209, 452, 434, 202, 396, 235, 362,
433, 434, 202, 162, 202, 315, 19, -531, -531, 430,
-531, 248, -531, 37, 275, 509, 510, 462, 323, 179,
179, 340, 136, 210, 515, 97, 98, 498, 37, 696,
697, 435, 165, 203, 37, 453, 394, 435, 163, 164,
384, 165, 969, 89, 365, 337, 385, 232, 469, 48,
309, 316, -531, 324, 81, 579, 581, 296, 95, 232,
305, 232, 369, 881, 208, 91, 338, 339, -510, 274,
19, 882, 1006, 308, 453, 837, 93, 97, 98, 359,
232, 970, 440, 890, 54, 101, 186, 298, 440, 305,
210, 235, 176, 96, 201, 453, 388, 370, 714, 313,
314, 371, 308, 653, 248, 453, 557, 558, -531, 92,
-531, 1007, 389, -531, 97, 98, 1009, 506, 99, 210,
401, 97, 98, 472, 173, 623, 144, 445, 235, -531,
-531, 53, -531, 516, -531, 177, 372, 315, 18, 18,
131, 248, 1026, 715, 748, 592, 749, 18, 593, 654,
658, 659, 150, 429, 97, 98, 663, 54, 320, 137,
470, -231, 209, 165, 167, 787, 137, 48, 467, 189,
81, 401, 997, 998, 187, 19, -55, 517, -231, 232,
-231, 1027, 179, 316, 394, 51, 1010, 394, 645, 162,
82, 150, 210, 195, 625, 471, 151, 688, 296, 137,
680, 681, 189, 488, 493, 638, 87, 690, 691, 606,
673, 19, 150, 190, 503, 143, 401, 667, 401, 711,
518, 427, -231, 165, 163, 164, 401, 165, 298, 526,
959, 624, 211, 159, 694, 197, 629, 143, -195, 305,
598, 689, 162, 165, 636, 48, 867, 81, 1000, 561,
147, 148, 308, 428, 865, 519, 869, 317, 562, 568,
819, 817, 1035, 328, 139, 141, 142, 585, 145, 885,
459, 48, 191, 960, 776, 464, 235, 163, 164, 235,
19, 448, 778, 779, 181, 182, 81, 149, 317, 248,
281, 1001, 248, 563, 564, 169, 299, 210, 191, 211,
791, 965, 170, 97, 98, 1036, 565, 192, 193, 191,
465, 466, 278, 279, 280, 767, 449, 282, 678, 206,
759, 760, 204, 660, 562, 131, 687, 796, 211, 253,
171, 695, 48, 192, 193, 81, 235, 194, 133, 723,
639, 48, 803, 728, 192, 193, 754, 162, 254, 248,
812, 806, 665, 279, 280, 205, 811, 755, 672, 563,
564, 59, 209, 255, 277, 631, 467, 48, 305, 162,
216, 641, 883, 277, 686, 19, 797, 221, 222, 693,
283, 308, 163, 164, 685, 165, 303, 287, 387, 685,
706, 655, 210, 21, 22, 648, 310, 19, 210, 37,
1011, 211, 19, 177, 163, 164, 642, 345, 346, 712,
341, 386, 756, 841, 210, 356, 417, 418, 419, 210,
757, 775, 649, 650, 320, 826, 656, 62, 63, 64,
651, 652, 758, 826, 741, 464, 360, 299, 221, 222,
500, 500, 500, -46, 713, 37, 305, 364, -46, 387,
765, 305, 737, 740, 834, 835, 836, 807, 808, 308,
305, 29, 843, 368, 308, 658, 659, 663, 480, 170,
465, 466, 786, 308, 209, 152, 98, 153, 154, 155,
378, 861, 801, 401, 457, 458, 400, 19, 320, 895,
210, 463, 202, 809, 317, 37, 84, 85, 39, 40,
978, 156, 34, 450, 210, 979, 211, -49, 455, 901,
381, 165, -49, 41, 746, 157, 862, 279, 280, 36,
824, 42, 911, 845, 97, 98, 851, 853, 38, 461,
832, 29, 59, 43, 474, 277, 507, 508, 580, 582,
501, 44, 504, 83, 84, 85, 505, 84, 85, 45,
34, 511, 256, 34, 32, 257, 512, 606, 606, 513,
34, 525, 938, 821, 822, 37, 567, 36, 39, 40,
36, 559, 560, 569, 35, 866, 38, 36, 448, 38,
870, 448, 571, 60, 81, 570, 38, 922, 854, 855,
572, 61, 583, 830, 584, 296, 296, 296, 62, 63,
64, 211, 258, 65, 354, 588, 277, 211, 19, 19,
19, 44, 272, 449, 74, 273, 449, 305, 305, 45,
34, 48, 589, 211, 594, 298, 298, 298, 211, 305,
308, 308, 908, 909, 76, 596, 949, 36, 597, 259,
343, 344, 308, 916, 917, 599, 38, 600, 305, 380,
383, 926, 977, 956, 260, 185, 628, 84, 85, 143,
934, 308, 261, 34, 143, 97, 98, 288, 915, 262,
263, 264, 630, 661, 265, 266, 420, 668, 320, 657,
36, 679, 267, 662, 666, 847, 698, 699, 664, 38,
700, 626, 701, 707, 669, 289, 290, 860, 843, 211,
709, 976, 708, 421, 422, 557, 558, 716, 682, 423,
424, 425, 426, 211, 718, 692, 746, 721, 722, 724,
742, 48, 725, 100, 726, 702, 627, 703, 704, 730,
734, 296, 296, 296, 735, 747, 29, 936, 158, 766,
277, 305, 317, 768, 19, 19, 19, 782, 954, 143,
792, 307, 784, 305, 308, 785, 957, 777, 332, 307,
788, 298, 298, 298, 793, 795, 308, 794, 798, 305,
37, 799, 800, 39, 40, 97, 98, 475, 606, 606,
307, 802, 308, 810, 815, 814, 762, 816, 41, 306,
1003, 769, 770, 771, 818, 825, 42, 336, 833, 772,
773, 838, 774, 840, 846, 476, 477, 857, 43, 924,
1016, 415, 416, 417, 418, 419, 44, 29, 358, 858,
859, 935, 863, 868, 45, 871, 276, 305, 875, 884,
305, -362, 886, 887, 299, 299, 299, 940, 284, 889,
308, 258, 892, 308, 347, 894, 291, 896, 898, 899,
-362, 37, 348, -362, 39, 40, 900, 327, 305, 349,
350, 351, 305, 305, 352, 1028, 1029, 902, 907, 183,
919, 308, 912, 923, 925, 308, 308, 184, 259, 927,
928, 305, -362, 479, -362, 813, 305, 52, 929, 43,
931, 52, 52, 260, 308, 932, -362, 44, 967, 308,
937, 261, 941, 952, 374, 45, 942, 943, 262, 263,
264, 950, 307, 265, 266, 958, 962, 52, 332, 305,
305, 267, 968, 971, 975, 982, 983, 985, 990, 986,
746, 988, 308, 308, 256, 31, 32, 33, 994, 52,
995, 999, 34, 1005, 279, 280, 282, 1012, 1008, 1002,
336, 83, 84, 85, 1004, 1014, 35, 1013, 34, 36,
412, 413, 414, 415, 416, 417, 418, 419, 38, 1015,
299, 299, 299, 307, 1018, 36, 291, 1024, 1025, 1032,
879, 880, 478, 1034, 38, 1037, 1038, 1030, 1031, 602,
603, 604, 1040, 608, 609, 610, 611, 612, 613, 614,
615, 616, 617, 618, 619, 620, 621, 622, 1041, 94,
20, 595, 27, 307, 52, 52, 52, 520, 174, 52,
28, 710, 443, 852, 52, 633, 634, 196, 200, 84,
85, 647, 132, 738, 355, 34, 468, 307, 903, 981,
904, 905, 906, 891, 483, 72, 73, 74, 75, 910,
783, 336, 36, 34, 473, 52, 52, 918, 591, 307,
675, 38, 134, 52, 494, 781, 374, 76, 761, 1017,
36, 140, 1019, 683, 684, 336, 367, 0, 37, 38,
873, 491, 40, 586, 485, 0, 0, 0, 0, 0,
486, 0, 272, 73, 74, 75, 60, 671, 390, 0,
34, 0, 0, 0, 61, 944, 945, 307, 946, 947,
948, 62, 63, 64, 76, 0, 492, 36, 0, 0,
446, 0, 0, 0, 44, 446, 38, 0, 0, 640,
0, 304, 45, 217, -19, -19, -19, -19, 218, 89,
207, 219, -19, 0, 0, 336, 0, 0, 0, 0,
0, 307, 0, 0, 0, 0, -19, 220, 0, -19,
221, 222, 0, 674, 0, 0, 223, 37, -19, 0,
52, 224, 52, 52, 0, 0, 780, 413, 414, 415,
416, 417, 418, 419, 0, 225, 0, 790, 307, 764,
0, 226, 227, 228, 0, 0, 0, 229, 230, 433,
434, 0, 0, 0, 0, 231, 327, 0, 0, 0,
0, 0, 0, 232, 208, 307, 332, 0, -510, 52,
52, 233, 234, 0, 258, 0, 336, 0, 729, 0,
307, 207, 0, 37, 0, 0, 435, 436, 0, 307,
52, 52, 0, 0, 307, 0, 0, 0, 0, 0,
0, 437, 0, 336, 0, 446, 0, 226, 227, 438,
0, 259, 0, 229, 230, 0, 0, 823, 336, 0,
0, 439, 0, 0, 0, 0, 260, 336, 374, 232,
0, 0, 336, 0, 261, 0, 0, 440, 234, 0,
0, 262, 263, 264, 0, 0, 265, 266, 0, 0,
0, 307, 332, 0, 267, 208, 0, 0, 0, -510,
632, 0, 256, 31, 32, 502, 646, 0, 0, 446,
34, 0, 357, 0, 217, -19, -19, -19, -19, 218,
89, 207, 219, -19, 35, 0, 0, 36, 0, 336,
0, 0, 0, 0, 0, 0, 38, -19, 220, 0,
-19, 221, 222, 0, 0, 0, 0, 223, 37, -19,
0, 52, 224, 0, 820, 0, 52, 411, 412, 413,
414, 415, 416, 417, 418, 419, 225, 332, 0, 0,
893, 0, 226, 227, 228, 0, 0, 0, 229, 230,
897, 0, 0, 0, 0, 0, 231, 307, 256, 0,
32, 398, 0, 0, 232, 208, 34, 0, 0, -510,
0, 0, 233, 234, 0, 0, 913, 914, 0, 0,
35, 52, 52, 36, 0, 0, 0, 332, 0, 0,
0, 0, 38, 0, 0, 336, 0, 0, 874, 0,
0, 0, 0, 0, 0, 256, 0, 32, 524, 0,
307, 52, 0, 34, 0, 329, 0, 217, -19, 52,
-19, -19, 218, 89, 0, 219, -19, 35, 0, 0,
36, 0, 0, 0, 0, 0, 332, 0, 0, 38,
-19, 220, 0, -19, 221, 222, 0, 0, 336, 0,
223, 37, -19, 0, 0, 224, 0, 0, 330, 0,
955, 0, 0, 0, 0, 0, 0, 0, 0, 225,
0, 0, 0, 0, 0, 226, 227, 228, 0, 805,
0, 229, 230, 0, 0, 0, 0, 0, 0, 231,
0, 0, 0, 0, 0, 0, 0, 232, 332, 0,
0, 332, 0, 0, 521, 233, 234, 0, 0, 743,
0, 528, -19, -19, -19, -19, 218, 89, 0, 219,
-19, 529, 52, 530, 531, 532, 533, 534, 535, 536,
537, 538, 539, 540, -19, 220, 0, -19, 221, 222,
0, 0, 0, 0, 223, 37, -19, 0, 0, 224,
0, 541, 177, 410, 411, 412, 413, 414, 415, 416,
417, 418, 419, 225, 0, 0, 0, 0, 0, 226,
227, 228, 0, 0, 0, 229, 230, 0, 0, 0,
0, 0, 0, 231, 0, 542, 0, 0, 543, 0,
0, 232, 0, 0, 0, 0, 0, 544, 744, 233,
234, 0, 0, 0, 0, 0, 52, 52, 52, 743,
0, 528, -19, -19, -19, -19, 218, 89, 0, 219,
-19, 529, 0, 530, 531, 532, 533, 534, 535, 536,
537, 538, 539, 540, -19, 220, 0, -19, 221, 222,
0, 0, 0, 0, 223, 37, -19, 0, 0, 224,
0, 541, 177, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 225, 0, 0, 0, 0, 0, 226,
227, 228, 0, 0, 0, 229, 230, 0, 0, 0,
0, 0, 0, 231, 0, 542, 0, 0, 543, 0,
0, 232, 0, 0, 0, 0, 0, 544, 876, 233,
234, 743, 0, 528, -19, -19, -19, -19, 218, 89,
0, 219, -19, 529, 0, 530, 531, 532, 533, 534,
535, 536, 537, 538, 539, 540, -19, 220, 0, -19,
221, 222, 0, 0, 0, 0, 223, 37, -19, 0,
0, 224, 0, 541, 177, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 225, 0, 0, 0, 0,
0, 226, 227, 228, 0, 0, 0, 229, 230, 0,
0, 0, 0, 0, 0, 231, 0, 542, 0, 0,
543, 0, 0, 232, 0, 0, 0, 0, 0, 544,
987, 233, 234, 527, 0, 528, -19, -19, -19, -19,
218, 89, 0, 219, -19, 529, 0, 530, 531, 532,
533, 534, 535, 536, 537, 538, 539, 540, -19, 220,
0, -19, 221, 222, 0, 0, 0, 0, 223, 37,
-19, 0, 0, 224, 0, 541, 177, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 225, 0, 0,
0, 0, 0, 226, 227, 228, 0, 0, 0, 229,
230, 0, 0, 0, 0, 0, 0, 231, 0, 542,
0, 0, 543, 0, 0, 232, 0, 0, 0, 0,
0, 544, 0, 233, 234, 750, 0, 528, -19, -19,
-19, -19, 218, 89, 0, 219, -19, 529, 0, 530,
531, 532, 533, 534, 535, 536, 537, 538, 539, 540,
-19, 220, 0, -19, 221, 222, 0, 0, 0, 0,
223, 37, -19, 0, 0, 224, 0, 541, 177, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 225,
0, 0, 0, 0, 0, 226, 227, 228, 0, 0,
0, 229, 230, 0, 0, 0, 0, 0, 0, 231,
0, 542, 0, 0, 543, 0, 0, 232, 0, 0,
0, 0, 0, 544, 0, 233, 234, 964, 0, 528,
-19, -19, -19, -19, 218, 89, 0, 219, -19, 529,
0, 530, 531, 532, 533, 534, 535, 536, 537, 538,
539, 540, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 541,
177, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 0, 0, 102,
0, 231, -19, 542, -19, -19, 543, 0, 0, 232,
-19, 0, 0, 0, 0, 544, 0, 233, 234, 0,
0, 0, 0, 0, -19, 0, 0, -19, 103, 104,
0, 0, 0, 0, 0, 0, -19, 105, 106, 0,
0, 0, 0, 0, 107, 108, 109, 0, 0, 110,
111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
121, 122, 123, 124, 0, 125, 126, 0, 0, 0,
0, 127, 0, 670, 128, 217, -19, -19, -19, -19,
218, 89, 207, 219, -19, 0, 0, 0, 0, 129,
130, 0, 0, 0, 0, 0, 0, 0, -19, 220,
0, -19, 221, 222, 0, 0, 0, 0, 223, 37,
-19, 0, 0, 224, 407, 408, 409, 410, 411, 412,
413, 414, 415, 416, 417, 418, 419, 225, 0, 0,
0, 0, 0, 226, 227, 228, 0, 0, 0, 229,
230, 0, 0, 0, 0, 0, 0, 231, 0, 0,
0, 0, 0, 0, 0, 232, 208, 0, 0, 0,
-510, 0, 0, 233, 234, 763, 0, 217, -19, -19,
-19, -19, 218, 89, 207, 219, -19, 408, 409, 410,
411, 412, 413, 414, 415, 416, 417, 418, 419, 0,
-19, 220, 0, -19, 221, 222, 0, 0, 0, 0,
223, 37, -19, 0, 0, 224, 409, 410, 411, 412,
413, 414, 415, 416, 417, 418, 419, 0, 0, 225,
0, 0, 0, 0, 0, 226, 227, 228, 0, 0,
0, 229, 230, 0, 0, 0, 0, 0, 0, 231,
0, 0, 0, 0, 0, 0, 0, 232, 208, 0,
0, 0, -510, 0, 0, 233, 234, 848, 0, 217,
-19, -19, -19, -19, 218, 89, 0, 219, -19, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
849, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 329, 0, 217,
-19, 231, -19, -19, 218, 89, 0, 219, -19, 232,
0, 0, 0, 0, 0, 850, 0, 233, 234, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
330, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 329, 0, 217,
-19, 231, -19, -19, 218, 89, 0, 219, -19, 232,
0, 0, 0, 0, 0, 0, 842, 233, 234, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
330, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 329, 0, 217,
-19, 231, -19, -19, 218, 89, 0, 219, -19, 232,
0, 0, 0, 0, 0, 0, -267, 233, 234, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
330, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 393, 0, 217,
-19, 231, -19, -19, 218, 89, 0, 219, -19, 232,
0, 0, 0, 0, 0, 0, 0, 233, 234, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
-143, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 605, 0, 217,
-19, 231, -19, -19, 218, 89, 0, 219, -19, 232,
0, 0, 0, 0, 0, 0, 0, 233, 234, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
0, 0, 0, 0, 0, -500, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 635, 0, 217,
-19, 231, -19, -19, 218, 89, 0, 219, -19, 232,
0, 0, 0, 0, 0, 0, 0, 233, 234, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
-167, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 605, 0, 217,
-19, 231, -19, -19, 218, 89, 0, 219, -19, 232,
0, 0, 0, 0, 0, 0, 0, 233, 234, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 605, 0, 217,
-19, 231, -19, -19, 218, 89, 0, 219, -19, 232,
0, 0, 0, 0, 0, -500, 0, 233, 234, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 0, 601, 0, 217,
-19, 231, -19, -19, 218, 89, 0, 219, -19, 232,
0, 0, 0, 0, -500, 0, 0, 233, 234, 0,
0, 0, -19, 220, 0, -19, 221, 222, 0, 0,
0, 0, 223, 37, -19, 0, 0, 224, 0, 0,
0, 294, 0, -19, -19, -19, -19, -19, 0, 0,
0, 225, -19, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, -19, 0, 0, -19,
0, 231, 0, -294, -294, -294, 0, -19, -19, 232,
-19, -19, 0, 0, 0, 0, 0, 233, 234, 295,
29, 0, 0, 0, 0, -19, 0, 207, 0, 0,
0, 0, 0, -19, 0, 0, 0, 294, 0, -19,
-19, -19, -19, -19, 0, -19, 0, 0, -19, 0,
0, 0, 0, -19, 37, 0, 0, 39, 40, 499,
-294, -19, -19, 0, 0, -19, 0, 0, 0, -296,
-296, -296, 183, -19, -19, 0, -19, -19, 0, 0,
184, 0, 0, 0, 294, 295, -19, -19, -19, -19,
-19, -19, 43, 0, 0, -19, 0, 0, 0, -19,
44, 208, 0, 0, 0, -510, 0, 0, 45, -19,
0, -19, -19, 0, 0, 0, -295, -295, -295, -19,
-19, -19, 0, -19, -19, 499, -296, -19, 0, 0,
0, 294, 295, -19, -19, -19, -19, -19, -19, 0,
0, 0, -19, 0, 0, 0, -19, 0, 0, 0,
0, 0, 0, 0, 0, 0, -19, 0, -19, -19,
0, 0, 0, -297, -297, -297, -19, -19, -19, 0,
-19, -19, 499, -295, -19, 0, 0, 0, 4, 295,
-19, -19, -19, -19, -19, -19, 0, 0, 0, -19,
0, 0, 0, -19, 0, 0, 0, 0, 0, 0,
0, 0, 5, -19, 0, -19, -19, 0, 0, 6,
0, 0, 0, -19, -19, -19, 0, -19, -19, 499,
-297, -19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -19, 0, 0, 0, 0, 0, 0, 294,
-19, -19, -19, -19, -19, -19, 0, 0, 0, 0,
-19, 0, -19, 0, 0, 0, 0, 0, 0, 0,
-19, 0, 7, 8, -19, 0, 9, -19, -19, 0,
0, -293, -293, -293, 0, -19, -19, 0, -19, -19,
0, 0, 0, 0, 0, 0, 294, 295, -19, -19,
-19, -19, -19, -19, 0, 0, 0, -19, 0, 0,
0, -19, 0, 0, 0, 0, 0, 0, 0, 0,
0, -19, 0, -19, -19, 0, 0, 0, -299, -299,
-299, -19, -19, -19, 0, -19, -19, 0, -293, -19,
0, 0, 0, 294, 295, -19, -19, -19, -19, -19,
-19, 0, 0, 0, -19, 0, 0, 0, -19, 0,
0, 0, 0, 0, 0, 0, 0, 0, -19, 0,
-19, -19, 0, 0, 0, -298, -298, -298, -19, -19,
-19, 0, -19, -19, 0, -299, -19, 0, 0, 0,
294, 295, -19, -19, -19, -19, -19, -19, 0, 0,
0, -19, 0, 0, 0, -19, 0, 0, 0, 0,
0, 0, 0, 0, 0, -19, 0, -19, -19, 0,
0, 0, -300, -300, -300, -19, -19, -19, 0, -19,
-19, 0, -298, -19, 0, 0, 0, 573, 295, 0,
0, 277, 0, 0, -19, 4, 0, -19, -19, -19,
-19, -19, -19, 0, 0, 0, -19, 0, 0, 0,
0, 0, 0, 0, -19, 0, 0, 0, 0, 0,
-19, 37, -19, -19, 574, 40, 0, 0, 0, -300,
-19, -19, -19, 0, -19, -19, 0, 0, 26, 575,
0, 0, 0, 0, 0, 0, 0, 576, 0, -19,
0, 0, 0, 0, 262, 263, 264, -19, 0, 577,
266, 0, 0, 0, 0, 0, 0, 578, 0, -19,
0, 0, 0, 0, 0, 45, 528, -19, 0, 7,
0, 218, 89, 9, 219, -19, 529, 0, 530, 531,
532, 533, 534, 535, 536, 537, 538, 539, 540, 0,
220, 0, 0, 221, 222, 0, 0, 0, 0, 223,
37, 0, 0, 0, 224, 0, 541, 177, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 225, 0,
0, 0, 0, 0, 226, 227, 228, 0, 0, 217,
229, 230, 0, 0, 218, 89, 0, 219, 231, 0,
542, 0, 0, 543, 0, 0, 232, 0, 0, 0,
0, 0, 544, 220, 233, 234, 221, 222, 0, 0,
0, 0, 223, 37, 0, 0, 0, 224, 0, 0,
0, 0, 217, 0, 0, 0, 0, 218, 89, 0,
219, 225, 0, 0, 0, 0, 0, 226, 227, 228,
0, 0, 0, 229, 230, 0, 220, 0, 0, 221,
222, 231, 0, 0, 0, 223, 37, 0, 0, 232,
224, 0, 0, 0, -88, 217, 0, 233, 234, 0,
218, 89, 0, 219, 225, 0, 0, 0, 0, 0,
226, 227, 228, 0, 0, 0, 229, 230, 0, 220,
0, 0, 221, 222, 231, 431, 0, 0, 223, 37,
0, 0, 232, 224, 0, 0, 0, 0, 217, 0,
233, 234, 0, 218, 89, 0, 219, 225, 0, 0,
0, 0, 0, 226, 227, 228, 0, 0, 0, 229,
230, 0, 220, 0, 0, 221, 222, 231, 0, 0,
0, 223, 37, 0, 0, 232, 224, 0, 0, 789,
0, 727, 0, 233, 234, 0, 0, 217, 0, 0,
225, 0, 218, 89, 0, 219, 226, 227, 228, 0,
0, 0, 229, 230, 0, 0, 0, 0, 0, 0,
231, 220, 0, 0, 221, 222, 0, 0, 232, 0,
223, 37, 0, 0, 0, 224, 233, 234, 0, 0,
217, 0, 0, 0, 0, 218, 89, 0, 219, 225,
0, 0, 0, 0, 0, 226, 227, 228, 0, 0,
0, 229, 230, 0, 220, 0, 0, 221, 222, 231,
0, 0, 0, 223, 37, 0, 0, 232, 224, 0,
0, 0, 0, 217, 0, 233, 234, 0, 218, 89,
0, 219, 225, 0, 0, 0, 0, 0, 226, 227,
228, 0, 0, 0, 229, 230, 0, 220, 0, 0,
221, 222, 379, 0, 0, 0, 223, 37, 0, 0,
232, 224, 0, 29, 72, 73, 74, 75, 233, 234,
0, 0, 34, 0, 0, 225, 0, 0, 0, 0,
0, 226, 227, 228, 0, 0, 76, 229, 230, 36,
29, 72, 73, 74, 75, 382, 0, 37, 38, 34,
39, 40, 0, 232, 0, 0, 0, 0, 0, 0,
0, 233, 234, 76, 0, 60, 36, 0, 0, 0,
0, 0, 0, 61, 37, 38, 0, 39, 40, 0,
62, 63, 64, 0, 0, 65, 0, 573, 256, 31,
32, 33, 60, 44, 0, 0, 34, 0, 0, 77,
61, 45, 0, 0, 0, 0, 0, 62, 63, 64,
35, 0, 65, 36, 29, 30, 31, 32, 33, 0,
44, 37, 38, 34, 574, 40, 739, 0, 45, 0,
0, 0, 0, 0, 0, 0, 0, 35, 0, 575,
36, 0, 0, 0, 0, 0, 0, 576, 37, 38,
0, 39, 40, 0, 262, 263, 264, 0, 0, 577,
266, 29, 256, 31, 32, 33, 41, 578, 0, 0,
34, 573, 0, 0, 42, 45, 0, 0, 207, 0,
0, 0, 0, 0, 35, 0, 43, 36, 0, 0,
0, 0, 0, 0, 44, 37, 38, 0, 39, 40,
0, 0, 45, 0, 0, 37, 0, 0, 574, 40,
0, 0, 0, 41, 0, 0, 0, 0, 0, 0,
0, 42, 0, 575, 483, 59, 0, 0, 0, 0,
0, 576, 0, 43, 827, 59, 0, 0, 262, 263,
264, 44, 0, 577, 266, 0, 0, 0, 0, 45,
0, 578, 208, 0, 0, 0, -510, 0, 37, 45,
0, 484, 40, 0, 485, 0, 0, 0, 37, 0,
486, 39, 40, 0, 828, 0, 60, 0, 0, 0,
829, 573, -525, 0, 61, 277, 60, 0, 0, 0,
0, 62, 63, 64, 61, 0, 487, 0, 0, 0,
0, 62, 63, 64, 44, 0, 65, 0, 29, 59,
0, 0, 45, 0, 44, 37, 0, 0, 574, 40,
0, 0, 45, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 575, 0, 0, 0, 0, 0, 0,
0, 576, 37, 0, 0, 39, 40, 0, 262, 263,
264, 0, 0, 577, 266, 29, 59, 0, 0, 0,
60, 578, 0, 0, 0, 0, 0, 0, 61, 45,
0, 0, 0, 198, 0, 62, 63, 64, 0, 0,
65, 0, 0, 0, 0, 0, 0, 0, 44, 37,
0, 0, 39, 40, 66, -531, 45, -531, 0, 0,
-531, 0, 29, 59, 0, 0, 0, 60, 573, 0,
0, 0, 162, 0, 0, 61, -531, -531, 0, -531,
0, -531, 62, 63, 64, 0, 0, 65, 0, 0,
0, 0, 0, 0, 0, 44, 37, 0, 0, 39,
40, 736, 37, 45, 0, 574, 40, 163, 164, 0,
165, 0, 0, 0, 60, 0, 0, 0, 0, 0,
575, -195, 61, 258, 272, 0, 74, 273, 576, 62,
63, 64, 34, 0, 65, 262, 263, 264, 0, 0,
577, 266, 44, 0, 0, 0, 76, 0, 578, 36,
45, 256, 31, 32, 33, 0, 45, 0, 38, 34,
259, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 35, 0, 260, 36, 0, 0, 0,
0, 0, 0, 261, 0, 38, 0, 0, 0, 0,
262, 263, 264, 0, 0, 265, 266, 0, 0, 0,
0, 0, 347, 267, 0, 0, 0, 0, 0, 0,
348, 0, 0, 0, 0, 0, 0, 349, 350, 351,
0, 0, 352, 402, 403, 404, 0, 0, 405, 406,
407, 408, 409, 410, 411, 412, 413, 414, 415, 416,
417, 418, 419, -90, 402, 403, 404, 0, 0, 405,
406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
416, 417, 418, 419, 0, 0, 676, 677, 402, 403,
404, 0, 0, 405, 406, 407, 408, 409, 410, 411,
412, 413, 414, 415, 416, 417, 418, 419, 404, 0,
0, 405, 406, 407, 408, 409, 410, 411, 412, 413,
414, 415, 416, 417, 418, 419, 406, 407, 408, 409,
410, 411, 412, 413, 414, 415, 416, 417, 418, 419
};
static const short yycheck[] = { 2,
3, 23, 57, 58, 18, 67, 101, 301, 11, 251,
214, 165, 2, 3, 168, 511, 225, 19, 170, 228,
82, 11, 17, 18, 233, 554, 188, 236, 56, 2,
3, 219, 220, 224, 37, 244, 247, 225, 11, 250,
228, 354, 181, 182, 193, 233, 542, 37, 236, 224,
58, 752, 753, 134, 9, 3, 244, 41, 265, 849,
194, 7, 65, 75, 1, 49, 0, 3, 4, 9,
33, 34, 35, 44, 864, 0, 29, 79, 49, 3,
4, 3, 4, 96, 86, 45, 23, 3, 25, 37,
10, 28, 246, 96, 3, 4, 9, 231, 101, 194,
3, 4, 9, 40, 9, 41, 96, 44, 45, 243,
47, 101, 49, 37, 136, 3, 4, 266, 40, 174,
175, 176, 75, 96, 324, 3, 4, 90, 37, 89,
90, 40, 78, 88, 37, 83, 231, 40, 75, 76,
38, 78, 49, 9, 206, 173, 44, 83, 88, 13,
163, 87, 89, 75, 18, 366, 367, 160, 40, 83,
163, 83, 10, 55, 84, 45, 174, 175, 88, 250,
160, 63, 49, 163, 83, 88, 90, 3, 4, 192,
83, 88, 91, 88, 49, 75, 1, 160, 91, 192,
163, 194, 1, 75, 196, 83, 387, 45, 45, 3,
4, 49, 192, 445, 194, 83, 345, 346, 23, 89,
25, 88, 387, 28, 3, 4, 20, 312, 44, 192,
45, 3, 4, 285, 89, 425, 4, 381, 231, 44,
45, 23, 47, 1, 49, 44, 84, 41, 2, 3,
243, 231, 49, 90, 79, 379, 81, 11, 382, 449,
457, 458, 45, 243, 3, 4, 463, 49, 25, 48,
40, 28, 265, 78, 3, 90, 48, 131, 270, 45,
134, 45, 973, 974, 89, 265, 44, 45, 45, 83,
47, 88, 337, 87, 379, 13, 90, 382, 442, 40,
18, 45, 265, 89, 428, 75, 89, 45, 301, 48,
89, 90, 45, 298, 299, 439, 308, 89, 90, 404,
472, 301, 45, 89, 88, 43, 45, 466, 45, 519,
40, 43, 89, 78, 75, 76, 45, 78, 301, 337,
45, 426, 96, 44, 89, 89, 431, 65, 89, 342,
395, 89, 40, 78, 439, 209, 89, 211, 45, 352,
3, 4, 342, 75, 89, 75, 89, 511, 40, 88,
673, 88, 45, 517, 40, 41, 42, 370, 44, 88,
577, 235, 40, 88, 585, 40, 379, 75, 76, 382,
370, 40, 586, 587, 60, 61, 250, 40, 542, 379,
88, 88, 382, 75, 76, 40, 160, 370, 40, 163,
600, 930, 47, 3, 4, 88, 88, 75, 76, 40,
75, 76, 140, 141, 142, 564, 75, 145, 480, 95,
559, 560, 3, 88, 40, 428, 488, 627, 192, 105,
75, 493, 296, 75, 76, 299, 439, 75, 428, 534,
40, 305, 642, 538, 75, 76, 88, 40, 49, 439,
657, 651, 465, 181, 182, 90, 656, 88, 471, 75,
76, 4, 465, 93, 7, 3, 468, 331, 471, 40,
44, 40, 88, 7, 487, 465, 628, 30, 31, 492,
4, 471, 75, 76, 487, 78, 162, 49, 41, 492,
512, 40, 465, 89, 90, 40, 93, 487, 471, 37,
996, 265, 492, 44, 75, 76, 75, 183, 184, 40,
90, 3, 55, 713, 487, 191, 63, 64, 65, 492,
63, 583, 67, 68, 25, 687, 75, 70, 71, 72,
75, 76, 75, 695, 548, 40, 93, 301, 30, 31,
834, 835, 836, 44, 75, 37, 549, 89, 49, 41,
563, 554, 547, 548, 698, 699, 700, 652, 40, 549,
563, 3, 714, 88, 554, 772, 773, 774, 296, 47,
75, 76, 594, 563, 577, 3, 4, 5, 6, 7,
41, 40, 637, 45, 260, 261, 88, 577, 25, 798,
563, 267, 9, 75, 748, 37, 6, 7, 40, 41,
3, 29, 12, 88, 577, 8, 370, 44, 41, 809,
798, 78, 49, 55, 549, 43, 75, 345, 346, 29,
682, 63, 826, 718, 3, 4, 721, 722, 38, 93,
692, 3, 4, 75, 45, 7, 3, 4, 366, 367,
88, 83, 88, 5, 6, 7, 93, 6, 7, 91,
12, 45, 4, 12, 6, 7, 75, 752, 753, 28,
12, 88, 862, 89, 90, 37, 88, 29, 40, 41,
29, 347, 348, 88, 26, 737, 38, 29, 40, 38,
742, 40, 88, 55, 548, 93, 38, 839, 49, 50,
88, 63, 368, 688, 10, 698, 699, 700, 70, 71,
72, 465, 3, 75, 866, 47, 7, 471, 698, 699,
700, 83, 4, 75, 6, 7, 75, 720, 721, 91,
12, 585, 45, 487, 75, 698, 699, 700, 492, 732,
720, 721, 89, 90, 26, 88, 888, 29, 88, 40,
879, 880, 732, 89, 90, 88, 38, 75, 751, 219,
220, 846, 956, 915, 55, 758, 47, 6, 7, 487,
855, 751, 63, 12, 492, 3, 4, 5, 830, 70,
71, 72, 48, 88, 75, 76, 40, 29, 25, 455,
29, 49, 83, 93, 93, 720, 49, 49, 464, 38,
49, 40, 89, 75, 470, 33, 34, 732, 950, 563,
88, 953, 47, 67, 68, 944, 945, 90, 484, 73,
74, 75, 76, 577, 75, 491, 751, 75, 75, 49,
548, 685, 89, 34, 89, 501, 75, 503, 504, 7,
44, 834, 835, 836, 89, 14, 3, 859, 49, 93,
7, 844, 996, 47, 834, 835, 836, 90, 910, 577,
49, 163, 88, 856, 844, 88, 918, 585, 170, 171,
88, 834, 835, 836, 88, 88, 856, 93, 93, 872,
37, 88, 88, 40, 41, 3, 4, 5, 973, 974,
192, 88, 872, 88, 93, 88, 562, 88, 55, 163,
985, 567, 568, 569, 88, 88, 63, 171, 88, 575,
576, 75, 578, 88, 75, 33, 34, 89, 75, 844,
1005, 61, 62, 63, 64, 65, 83, 3, 192, 89,
75, 856, 90, 89, 91, 89, 137, 930, 90, 88,
933, 25, 88, 93, 698, 699, 700, 872, 149, 90,
930, 3, 88, 933, 55, 88, 157, 88, 88, 88,
44, 37, 63, 47, 40, 41, 93, 168, 961, 70,
71, 72, 965, 966, 75, 1020, 1021, 88, 47, 55,
3, 961, 49, 88, 88, 965, 966, 63, 40, 15,
89, 984, 76, 295, 78, 661, 989, 13, 90, 75,
89, 17, 18, 55, 984, 88, 90, 83, 933, 989,
89, 63, 44, 88, 215, 91, 89, 89, 70, 71,
72, 45, 324, 75, 76, 75, 88, 43, 330, 1022,
1023, 83, 49, 88, 90, 88, 961, 75, 9, 90,
965, 966, 1022, 1023, 4, 5, 6, 7, 89, 65,
89, 88, 12, 75, 772, 773, 774, 88, 45, 984,
324, 5, 6, 7, 989, 3, 26, 88, 12, 29,
58, 59, 60, 61, 62, 63, 64, 65, 38, 88,
834, 835, 836, 385, 89, 29, 287, 89, 88, 9,
756, 757, 293, 89, 38, 9, 89, 1022, 1023, 401,
402, 403, 0, 405, 406, 407, 408, 409, 410, 411,
412, 413, 414, 415, 416, 417, 418, 419, 0, 26,
3, 385, 11, 425, 140, 141, 142, 328, 56, 145,
11, 517, 246, 721, 150, 437, 438, 79, 5, 6,
7, 443, 37, 547, 189, 12, 274, 449, 814, 959,
816, 817, 818, 789, 3, 4, 5, 6, 7, 825,
591, 425, 29, 12, 287, 181, 182, 833, 377, 471,
474, 38, 37, 189, 299, 589, 377, 26, 561, 1006,
29, 40, 1008, 485, 486, 449, 211, -1, 37, 38,
748, 40, 41, 370, 43, -1, -1, -1, -1, -1,
49, -1, 4, 5, 6, 7, 55, 471, 224, -1,
12, -1, -1, -1, 63, 881, 882, 519, 884, 885,
886, 70, 71, 72, 26, -1, 75, 29, -1, -1,
246, -1, -1, -1, 83, 251, 38, -1, -1, 440,
-1, 1, 91, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, -1, -1, 519, -1, -1, -1, -1,
-1, 563, -1, -1, -1, -1, 26, 27, -1, 29,
30, 31, -1, 474, -1, -1, 36, 37, 38, -1,
296, 41, 298, 299, -1, -1, 588, 59, 60, 61,
62, 63, 64, 65, -1, 55, -1, 599, 600, 563,
-1, 61, 62, 63, -1, -1, -1, 67, 68, 3,
4, -1, -1, -1, -1, 75, 517, -1, -1, -1,
-1, -1, -1, 83, 84, 627, 628, -1, 88, 345,
346, 91, 92, -1, 3, -1, 600, -1, 539, -1,
642, 10, -1, 37, -1, -1, 40, 41, -1, 651,
366, 367, -1, -1, 656, -1, -1, -1, -1, -1,
-1, 55, -1, 627, -1, 381, -1, 61, 62, 63,
-1, 40, -1, 67, 68, -1, -1, 679, 642, -1,
-1, 75, -1, -1, -1, -1, 55, 651, 589, 83,
-1, -1, 656, -1, 63, -1, -1, 91, 92, -1,
-1, 70, 71, 72, -1, -1, 75, 76, -1, -1,
-1, 713, 714, -1, 83, 84, -1, -1, -1, 88,
436, -1, 4, 5, 6, 7, 442, -1, -1, 445,
12, -1, 1, -1, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 26, -1, -1, 29, -1, 713,
-1, -1, -1, -1, -1, -1, 38, 26, 27, -1,
29, 30, 31, -1, -1, -1, -1, 36, 37, 38,
-1, 487, 41, -1, 675, -1, 492, 57, 58, 59,
60, 61, 62, 63, 64, 65, 55, 789, -1, -1,
792, -1, 61, 62, 63, -1, -1, -1, 67, 68,
802, -1, -1, -1, -1, -1, 75, 809, 4, -1,
6, 7, -1, -1, 83, 84, 12, -1, -1, 88,
-1, -1, 91, 92, -1, -1, 828, 829, -1, -1,
26, 547, 548, 29, -1, -1, -1, 839, -1, -1,
-1, -1, 38, -1, -1, 809, -1, -1, 749, -1,
-1, -1, -1, -1, -1, 4, -1, 6, 7, -1,
862, 577, -1, 12, -1, 1, -1, 3, 4, 585,
6, 7, 8, 9, -1, 11, 12, 26, -1, -1,
29, -1, -1, -1, -1, -1, 888, -1, -1, 38,
26, 27, -1, 29, 30, 31, -1, -1, 862, -1,
36, 37, 38, -1, -1, 41, -1, -1, 44, -1,
912, -1, -1, -1, -1, -1, -1, -1, -1, 55,
-1, -1, -1, -1, -1, 61, 62, 63, -1, 645,
-1, 67, 68, -1, -1, -1, -1, -1, -1, 75,
-1, -1, -1, -1, -1, -1, -1, 83, 950, -1,
-1, 953, -1, -1, 90, 91, 92, -1, -1, 1,
-1, 3, 4, 5, 6, 7, 8, 9, -1, 11,
12, 13, 688, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, -1, 29, 30, 31,
-1, -1, -1, -1, 36, 37, 38, -1, -1, 41,
-1, 43, 44, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, 55, -1, -1, -1, -1, -1, 61,
62, 63, -1, -1, -1, 67, 68, -1, -1, -1,
-1, -1, -1, 75, -1, 77, -1, -1, 80, -1,
-1, 83, -1, -1, -1, -1, -1, 89, 90, 91,
92, -1, -1, -1, -1, -1, 772, 773, 774, 1,
-1, 3, 4, 5, 6, 7, 8, 9, -1, 11,
12, 13, -1, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, -1, 29, 30, 31,
-1, -1, -1, -1, 36, 37, 38, -1, -1, 41,
-1, 43, 44, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 55, -1, -1, -1, -1, -1, 61,
62, 63, -1, -1, -1, 67, 68, -1, -1, -1,
-1, -1, -1, 75, -1, 77, -1, -1, 80, -1,
-1, 83, -1, -1, -1, -1, -1, 89, 90, 91,
92, 1, -1, 3, 4, 5, 6, 7, 8, 9,
-1, 11, 12, 13, -1, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, -1, 29,
30, 31, -1, -1, -1, -1, 36, 37, 38, -1,
-1, 41, -1, 43, 44, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 55, -1, -1, -1, -1,
-1, 61, 62, 63, -1, -1, -1, 67, 68, -1,
-1, -1, -1, -1, -1, 75, -1, 77, -1, -1,
80, -1, -1, 83, -1, -1, -1, -1, -1, 89,
90, 91, 92, 1, -1, 3, 4, 5, 6, 7,
8, 9, -1, 11, 12, 13, -1, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
-1, 29, 30, 31, -1, -1, -1, -1, 36, 37,
38, -1, -1, 41, -1, 43, 44, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 55, -1, -1,
-1, -1, -1, 61, 62, 63, -1, -1, -1, 67,
68, -1, -1, -1, -1, -1, -1, 75, -1, 77,
-1, -1, 80, -1, -1, 83, -1, -1, -1, -1,
-1, 89, -1, 91, 92, 1, -1, 3, 4, 5,
6, 7, 8, 9, -1, 11, 12, 13, -1, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, -1, 29, 30, 31, -1, -1, -1, -1,
36, 37, 38, -1, -1, 41, -1, 43, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 55,
-1, -1, -1, -1, -1, 61, 62, 63, -1, -1,
-1, 67, 68, -1, -1, -1, -1, -1, -1, 75,
-1, 77, -1, -1, 80, -1, -1, 83, -1, -1,
-1, -1, -1, 89, -1, 91, 92, 1, -1, 3,
4, 5, 6, 7, 8, 9, -1, 11, 12, 13,
-1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, 43,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, -1, -1, 1,
-1, 75, 4, 77, 6, 7, 80, -1, -1, 83,
12, -1, -1, -1, -1, 89, -1, 91, 92, -1,
-1, -1, -1, -1, 26, -1, -1, 29, 30, 31,
-1, -1, -1, -1, -1, -1, 38, 39, 40, -1,
-1, -1, -1, -1, 46, 47, 48, -1, -1, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, -1, 67, 68, -1, -1, -1,
-1, 73, -1, 1, 76, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, -1, -1, -1, -1, 91,
92, -1, -1, -1, -1, -1, -1, -1, 26, 27,
-1, 29, 30, 31, -1, -1, -1, -1, 36, 37,
38, -1, -1, 41, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 55, -1, -1,
-1, -1, -1, 61, 62, 63, -1, -1, -1, 67,
68, -1, -1, -1, -1, -1, -1, 75, -1, -1,
-1, -1, -1, -1, -1, 83, 84, -1, -1, -1,
88, -1, -1, 91, 92, 1, -1, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 54, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
26, 27, -1, 29, 30, 31, -1, -1, -1, -1,
36, 37, 38, -1, -1, 41, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, -1, -1, 55,
-1, -1, -1, -1, -1, 61, 62, 63, -1, -1,
-1, 67, 68, -1, -1, -1, -1, -1, -1, 75,
-1, -1, -1, -1, -1, -1, -1, 83, 84, -1,
-1, -1, 88, -1, -1, 91, 92, 1, -1, 3,
4, 5, 6, 7, 8, 9, -1, 11, 12, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, 1, -1, 3,
4, 75, 6, 7, 8, 9, -1, 11, 12, 83,
-1, -1, -1, -1, -1, 89, -1, 91, 92, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, 1, -1, 3,
4, 75, 6, 7, 8, 9, -1, 11, 12, 83,
-1, -1, -1, -1, -1, -1, 90, 91, 92, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, 1, -1, 3,
4, 75, 6, 7, 8, 9, -1, 11, 12, 83,
-1, -1, -1, -1, -1, -1, 90, 91, 92, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, 1, -1, 3,
4, 75, 6, 7, 8, 9, -1, 11, 12, 83,
-1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, 1, -1, 3,
4, 75, 6, 7, 8, 9, -1, 11, 12, 83,
-1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
-1, -1, -1, -1, -1, 49, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, 1, -1, 3,
4, 75, 6, 7, 8, 9, -1, 11, 12, 83,
-1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, 1, -1, 3,
4, 75, 6, 7, 8, 9, -1, 11, 12, 83,
-1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, 1, -1, 3,
4, 75, 6, 7, 8, 9, -1, 11, 12, 83,
-1, -1, -1, -1, -1, 89, -1, 91, 92, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, -1, 1, -1, 3,
4, 75, 6, 7, 8, 9, -1, 11, 12, 83,
-1, -1, -1, -1, 88, -1, -1, 91, 92, -1,
-1, -1, 26, 27, -1, 29, 30, 31, -1, -1,
-1, -1, 36, 37, 38, -1, -1, 41, -1, -1,
-1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
-1, 55, 12, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, 26, -1, -1, 29,
-1, 75, -1, 33, 34, 35, -1, 37, 38, 83,
40, 41, -1, -1, -1, -1, -1, 91, 92, 49,
3, -1, -1, -1, -1, 55, -1, 10, -1, -1,
-1, -1, -1, 63, -1, -1, -1, 1, -1, 3,
4, 5, 6, 7, -1, 75, -1, -1, 12, -1,
-1, -1, -1, 83, 37, -1, -1, 40, 41, 89,
90, 91, 26, -1, -1, 29, -1, -1, -1, 33,
34, 35, 55, 37, 38, -1, 40, 41, -1, -1,
63, -1, -1, -1, 1, 49, 3, 4, 5, 6,
7, 55, 75, -1, -1, 12, -1, -1, -1, 63,
83, 84, -1, -1, -1, 88, -1, -1, 91, 26,
-1, 75, 29, -1, -1, -1, 33, 34, 35, 83,
37, 38, -1, 40, 41, 89, 90, 91, -1, -1,
-1, 1, 49, 3, 4, 5, 6, 7, 55, -1,
-1, -1, 12, -1, -1, -1, 63, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 26, -1, 75, 29,
-1, -1, -1, 33, 34, 35, 83, 37, 38, -1,
40, 41, 89, 90, 91, -1, -1, -1, 1, 49,
3, 4, 5, 6, 7, 55, -1, -1, -1, 12,
-1, -1, -1, 63, -1, -1, -1, -1, -1, -1,
-1, -1, 25, 26, -1, 75, 29, -1, -1, 32,
-1, -1, -1, 83, 37, 38, -1, 40, 41, 89,
90, 91, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 55, -1, -1, -1, -1, -1, -1, 1,
63, 3, 4, 5, 6, 7, -1, -1, -1, -1,
12, -1, 75, -1, -1, -1, -1, -1, -1, -1,
83, -1, 85, 86, 26, -1, 89, 29, 91, -1,
-1, 33, 34, 35, -1, 37, 38, -1, 40, 41,
-1, -1, -1, -1, -1, -1, 1, 49, 3, 4,
5, 6, 7, 55, -1, -1, -1, 12, -1, -1,
-1, 63, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 26, -1, 75, 29, -1, -1, -1, 33, 34,
35, 83, 37, 38, -1, 40, 41, -1, 90, 91,
-1, -1, -1, 1, 49, 3, 4, 5, 6, 7,
55, -1, -1, -1, 12, -1, -1, -1, 63, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 26, -1,
75, 29, -1, -1, -1, 33, 34, 35, 83, 37,
38, -1, 40, 41, -1, 90, 91, -1, -1, -1,
1, 49, 3, 4, 5, 6, 7, 55, -1, -1,
-1, 12, -1, -1, -1, 63, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 26, -1, 75, 29, -1,
-1, -1, 33, 34, 35, 83, 37, 38, -1, 40,
41, -1, 90, 91, -1, -1, -1, 3, 49, -1,
-1, 7, -1, -1, 55, 1, -1, 3, 4, 5,
6, 7, 63, -1, -1, -1, 12, -1, -1, -1,
-1, -1, -1, -1, 75, -1, -1, -1, -1, -1,
26, 37, 83, 29, 40, 41, -1, -1, -1, 90,
91, 37, 38, -1, 40, 41, -1, -1, 44, 55,
-1, -1, -1, -1, -1, -1, -1, 63, -1, 55,
-1, -1, -1, -1, 70, 71, 72, 63, -1, 75,
76, -1, -1, -1, -1, -1, -1, 83, -1, 75,
-1, -1, -1, -1, -1, 91, 3, 83, -1, 85,
-1, 8, 9, 89, 11, 91, 13, -1, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, -1,
27, -1, -1, 30, 31, -1, -1, -1, -1, 36,
37, -1, -1, -1, 41, -1, 43, 44, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 55, -1,
-1, -1, -1, -1, 61, 62, 63, -1, -1, 3,
67, 68, -1, -1, 8, 9, -1, 11, 75, -1,
77, -1, -1, 80, -1, -1, 83, -1, -1, -1,
-1, -1, 89, 27, 91, 92, 30, 31, -1, -1,
-1, -1, 36, 37, -1, -1, -1, 41, -1, -1,
-1, -1, 3, -1, -1, -1, -1, 8, 9, -1,
11, 55, -1, -1, -1, -1, -1, 61, 62, 63,
-1, -1, -1, 67, 68, -1, 27, -1, -1, 30,
31, 75, -1, -1, -1, 36, 37, -1, -1, 83,
41, -1, -1, -1, 88, 3, -1, 91, 92, -1,
8, 9, -1, 11, 55, -1, -1, -1, -1, -1,
61, 62, 63, -1, -1, -1, 67, 68, -1, 27,
-1, -1, 30, 31, 75, 76, -1, -1, 36, 37,
-1, -1, 83, 41, -1, -1, -1, -1, 3, -1,
91, 92, -1, 8, 9, -1, 11, 55, -1, -1,
-1, -1, -1, 61, 62, 63, -1, -1, -1, 67,
68, -1, 27, -1, -1, 30, 31, 75, -1, -1,
-1, 36, 37, -1, -1, 83, 41, -1, -1, 44,
-1, 89, -1, 91, 92, -1, -1, 3, -1, -1,
55, -1, 8, 9, -1, 11, 61, 62, 63, -1,
-1, -1, 67, 68, -1, -1, -1, -1, -1, -1,
75, 27, -1, -1, 30, 31, -1, -1, 83, -1,
36, 37, -1, -1, -1, 41, 91, 92, -1, -1,
3, -1, -1, -1, -1, 8, 9, -1, 11, 55,
-1, -1, -1, -1, -1, 61, 62, 63, -1, -1,
-1, 67, 68, -1, 27, -1, -1, 30, 31, 75,
-1, -1, -1, 36, 37, -1, -1, 83, 41, -1,
-1, -1, -1, 3, -1, 91, 92, -1, 8, 9,
-1, 11, 55, -1, -1, -1, -1, -1, 61, 62,
63, -1, -1, -1, 67, 68, -1, 27, -1, -1,
30, 31, 75, -1, -1, -1, 36, 37, -1, -1,
83, 41, -1, 3, 4, 5, 6, 7, 91, 92,
-1, -1, 12, -1, -1, 55, -1, -1, -1, -1,
-1, 61, 62, 63, -1, -1, 26, 67, 68, 29,
3, 4, 5, 6, 7, 75, -1, 37, 38, 12,
40, 41, -1, 83, -1, -1, -1, -1, -1, -1,
-1, 91, 92, 26, -1, 55, 29, -1, -1, -1,
-1, -1, -1, 63, 37, 38, -1, 40, 41, -1,
70, 71, 72, -1, -1, 75, -1, 3, 4, 5,
6, 7, 55, 83, -1, -1, 12, -1, -1, 89,
63, 91, -1, -1, -1, -1, -1, 70, 71, 72,
26, -1, 75, 29, 3, 4, 5, 6, 7, -1,
83, 37, 38, 12, 40, 41, 89, -1, 91, -1,
-1, -1, -1, -1, -1, -1, -1, 26, -1, 55,
29, -1, -1, -1, -1, -1, -1, 63, 37, 38,
-1, 40, 41, -1, 70, 71, 72, -1, -1, 75,
76, 3, 4, 5, 6, 7, 55, 83, -1, -1,
12, 3, -1, -1, 63, 91, -1, -1, 10, -1,
-1, -1, -1, -1, 26, -1, 75, 29, -1, -1,
-1, -1, -1, -1, 83, 37, 38, -1, 40, 41,
-1, -1, 91, -1, -1, 37, -1, -1, 40, 41,
-1, -1, -1, 55, -1, -1, -1, -1, -1, -1,
-1, 63, -1, 55, 3, 4, -1, -1, -1, -1,
-1, 63, -1, 75, 3, 4, -1, -1, 70, 71,
72, 83, -1, 75, 76, -1, -1, -1, -1, 91,
-1, 83, 84, -1, -1, -1, 88, -1, 37, 91,
-1, 40, 41, -1, 43, -1, -1, -1, 37, -1,
49, 40, 41, -1, 43, -1, 55, -1, -1, -1,
49, 3, 4, -1, 63, 7, 55, -1, -1, -1,
-1, 70, 71, 72, 63, -1, 75, -1, -1, -1,
-1, 70, 71, 72, 83, -1, 75, -1, 3, 4,
-1, -1, 91, -1, 83, 37, -1, -1, 40, 41,
-1, -1, 91, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 55, -1, -1, -1, -1, -1, -1,
-1, 63, 37, -1, -1, 40, 41, -1, 70, 71,
72, -1, -1, 75, 76, 3, 4, -1, -1, -1,
55, 83, -1, -1, -1, -1, -1, -1, 63, 91,
-1, -1, -1, 1, -1, 70, 71, 72, -1, -1,
75, -1, -1, -1, -1, -1, -1, -1, 83, 37,
-1, -1, 40, 41, 89, 23, 91, 25, -1, -1,
28, -1, 3, 4, -1, -1, -1, 55, 3, -1,
-1, -1, 40, -1, -1, 63, 44, 45, -1, 47,
-1, 49, 70, 71, 72, -1, -1, 75, -1, -1,
-1, -1, -1, -1, -1, 83, 37, -1, -1, 40,
41, 89, 37, 91, -1, 40, 41, 75, 76, -1,
78, -1, -1, -1, 55, -1, -1, -1, -1, -1,
55, 89, 63, 3, 4, -1, 6, 7, 63, 70,
71, 72, 12, -1, 75, 70, 71, 72, -1, -1,
75, 76, 83, -1, -1, -1, 26, -1, 83, 29,
91, 4, 5, 6, 7, -1, 91, -1, 38, 12,
40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 26, -1, 55, 29, -1, -1, -1,
-1, -1, -1, 63, -1, 38, -1, -1, -1, -1,
70, 71, 72, -1, -1, 75, 76, -1, -1, -1,
-1, -1, 55, 83, -1, -1, -1, -1, -1, -1,
63, -1, -1, -1, -1, -1, -1, 70, 71, 72,
-1, -1, 75, 46, 47, 48, -1, -1, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, 45, 46, 47, 48, -1, -1, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, -1, -1, 89, 90, 46, 47,
48, -1, -1, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 48, -1,
-1, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 52, 53, 54, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65
};
#define YYPURE 1
#line 2 "bison.simple"
/* Skeleton output parser for bison,
copyright (C) 1984 Bob Corbett and Richard Stallman
NO WARRANTY
BECAUSE THIS PROGRAM IS LICENSED FREE OF CHARGE, WE PROVIDE ABSOLUTELY
NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW. EXCEPT
WHEN OTHERWISE STATED IN WRITING, FREE SOFTWARE FOUNDATION, INC,
RICHARD M. STALLMAN AND/OR OTHER PARTIES PROVIDE THIS PROGRAM "AS IS"
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY
AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL RICHARD M.
STALLMAN, THE FREE SOFTWARE FOUNDATION, INC., AND/OR ANY OTHER PARTY
WHO MAY MODIFY AND REDISTRIBUTE THIS PROGRAM AS PERMITTED BELOW, BE
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES, OR
OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR
DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY THIRD PARTIES OR
A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS) THIS
PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.
GENERAL PUBLIC LICENSE TO COPY
1. You may copy and distribute verbatim copies of this source file
as you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy a valid copyright notice "Copyright
(C) 1985 Free Software Foundation, Inc."; and include following the
copyright notice a verbatim copy of the above disclaimer of warranty
and of this License. You may charge a distribution fee for the
physical act of transferring a copy.
2. You may modify your copy or copies of this source file or
any portion of it, and copy and distribute such modifications under
the terms of Paragraph 1 above, provided that you also do the following:
a) cause the modified files to carry prominent notices stating
that you changed the files and the date of any change; and
b) cause the whole of any work that you distribute or publish,
that in whole or in part contains or is a derivative of this
program or any part thereof, to be licensed at no charge to all
third parties on terms identical to those contained in this
License Agreement (except that you may choose to grant more extensive
warranty protection to some or all third parties, at your option).
c) You may charge a distribution fee for the physical act of
transferring a copy, and you may at your option offer warranty
protection in exchange for a fee.
Mere aggregation of another unrelated program with this program (or its
derivative) on a volume of a storage or distribution medium does not bring
the other program under the scope of these terms.
3. You may copy and distribute this program (or a portion or derivative
of it, under Paragraph 2) in object code or executable form under the terms
of Paragraphs 1 and 2 above provided that you also do one of the following:
a) accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of
Paragraphs 1 and 2 above; or,
b) accompany it with a written offer, valid for at least three
years, to give any third party free (except for a nominal
shipping charge) a complete machine-readable copy of the
corresponding source code, to be distributed under the terms of
Paragraphs 1 and 2 above; or,
c) accompany it with the information you received as to where the
corresponding source code may be obtained. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form alone.)
For an executable file, complete source code means all the source code for
all modules it contains; but, as a special exception, it need not include
source code for modules which are standard libraries that accompany the
operating system on which the executable file runs.
4. You may not copy, sublicense, distribute or transfer this program
except as expressly provided under this License Agreement. Any attempt
otherwise to copy, sublicense, distribute or transfer this program is void and
your rights to use the program under this License agreement shall be
automatically terminated. However, parties who have received computer
software programs from you with this License Agreement will not have
their licenses terminated so long as such parties remain in full compliance.
5. If you wish to incorporate parts of this program into other free
programs whose distribution conditions are different, write to the Free
Software Foundation at 675 Mass Ave, Cambridge, MA 02139. We have not yet
worked out a simple rule that can be stated here, but we will often permit
this. We will be guided by the two goals of preserving the free status of
all derivatives of our free software and of promoting the sharing and reuse of
software.
In other words, you are welcome to use, share and improve this program.
You are forbidden to forbid anyone else to use, share and improve
what you give them. Help stamp out software-hoarding! */
/* This is the parser code that is written into each bison parser
when the %semantic_parser declaration is not specified in the grammar.
It was written by Richard Stallman by simplifying the hairy parser
used when %semantic_parser is specified. */
/* Note: there must be only one dollar sign in this file.
It is replaced by the list of actions, each action
as one case of the switch. */
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2
#define YYEOF 0
#define YYFAIL goto yyerrlab;
#define YYTERROR 1
#ifndef YYIMPURE
#define YYLEX yylex()
#endif
#ifndef YYPURE
#define YYLEX yylex(&yylval, &yylloc)
#endif
/* If nonreentrant, generate the variables here */
#ifndef YYIMPURE
int yychar; /* the lookahead symbol */
YYSTYPE yylval; /* the semantic value of the */
/* lookahead symbol */
YYLTYPE yylloc; /* location data for the lookahead */
/* symbol */
int yynerr; /* number of parse errors so far */
#ifdef YYDEBUG
int yydebug = 0; /* nonzero means print parse trace */
#endif
#endif /* YYIMPURE */
/* YYMAXDEPTH indicates the initial size of the parser's stacks */
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 200
#endif
/* YYMAXLIMIT is the maximum size the stacks can grow to
(effective only if the built-in stack extension method is used). */
#ifndef YYMAXLIMIT
#define YYMAXLIMIT 10000
#endif
#line 167 "bison.simple"
int
yyparse()
{
register int yystate;
register int yyn;
register short *yyssp;
register YYSTYPE *yyvsp;
YYLTYPE *yylsp;
int yyerrstatus; /* number of tokens to shift before error messages enabled */
int yychar1; /* lookahead token as an internal (translated) token number */
short yyssa[YYMAXDEPTH]; /* the state stack */
YYSTYPE yyvsa[YYMAXDEPTH]; /* the semantic value stack */
YYLTYPE yylsa[YYMAXDEPTH]; /* the location stack */
short *yyss = yyssa; /* refer to the stacks thru separate pointers */
YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
YYLTYPE *yyls = yylsa;
int yymaxdepth = YYMAXDEPTH;
#ifndef YYPURE
int yychar;
YYSTYPE yylval;
YYLTYPE yylloc;
#endif
#ifdef YYDEBUG
extern int yydebug;
#endif
YYSTYPE yyval; /* the variable used to return */
/* semantic values from the action */
/* routines */
int yylen;
#ifdef YYDEBUG
if (yydebug)
fprintf(stderr, "Starting parse\n");
#endif
yystate = 0;
yyerrstatus = 0;
yynerr = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
/* Initialize stack pointers.
Waste one element of value and location stack
so that they stay on the same level as the state stack. */
yyssp = yyss - 1;
yyvsp = yyvs;
yylsp = yyls;
/* Push a new state, which is found in yystate . */
/* In all cases, when you get here, the value and location stacks
have just been pushed. so pushing a state here evens the stacks. */
yynewstate:
*++yyssp = yystate;
if (yyssp >= yyss + yymaxdepth - 1)
{
/* Give user a chance to reallocate the stack */
/* Use copies of these so that the &'s don't force the real ones into memory. */
YYSTYPE *yyvs1 = yyvs;
YYLTYPE *yyls1 = yyls;
short *yyss1 = yyss;
/* Get the current used size of the three stacks, in elements. */
int size = yyssp - yyss + 1;
#ifdef yyoverflow
/* Each stack pointer address is followed by the size of
the data in use in that stack, in bytes. */
yyoverflow("parser stack overflow",
&yyss1, size * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp),
&yyls1, size * sizeof (*yylsp),
&yymaxdepth);
yyss = yyss1; yyvs = yyvs1; yyls = yyls1;
#else /* no yyoverflow */
/* Extend the stack our own way. */
if (yymaxdepth >= YYMAXLIMIT)
yyerror("parser stack overflow");
yymaxdepth *= 2;
if (yymaxdepth > YYMAXLIMIT)
yymaxdepth = YYMAXLIMIT;
yyss = (short *) alloca (yymaxdepth * sizeof (*yyssp));
bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
yyvs = (YYSTYPE *) alloca (yymaxdepth * sizeof (*yyvsp));
bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
yyls = (YYLTYPE *) alloca (yymaxdepth * sizeof (*yylsp));
bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
#endif
#endif /* no yyoverflow */
yyssp = yyss + size - 1;
yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
yylsp = yyls + size - 1;
#endif
#ifdef YYDEBUG
if (yydebug)
fprintf(stderr, "Stack size increased to %d\n", yymaxdepth);
#endif
if (yyssp >= yyss + yymaxdepth - 1)
YYABORT;
}
#ifdef YYDEBUG
if (yydebug)
fprintf(stderr, "Entering state %d\n", yystate);
#endif
/* Do appropriate processing given the current state. */
/* Read a lookahead token if we need one and don't already have one. */
yyresume:
/* First try to decide what to do without reference to lookahead token. */
yyn = yypact[yystate];
if (yyn == YYFLAG)
goto yydefault;
/* Not known => get a lookahead token if don't already have one. */
/* yychar is either YYEMPTY or YYEOF
or a valid token in external form. */
if (yychar == YYEMPTY)
{
#ifdef YYDEBUG
if (yydebug)
fprintf(stderr, "Reading a token: ");
#endif
yychar = YYLEX;
}
/* Convert token to internal form (in yychar1) for indexing tables with */
if (yychar <= 0) /* This means end of input. */
{
yychar1 = 0;
yychar = YYEOF; /* Don't call YYLEX any more */
#ifdef YYDEBUG
if (yydebug)
fprintf(stderr, "Now at end of input.\n");
#endif
}
else
{
yychar1 = YYTRANSLATE(yychar);
#ifdef YYDEBUG
if (yydebug)
fprintf(stderr, "Next token is %d (%s)\n", yychar, yytname[yychar1]);
#endif
}
yyn += yychar1;
if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
goto yydefault;
yyn = yytable[yyn];
/* yyn is what to do for this token type in this state.
Negative => reduce, -yyn is rule number.
Positive => shift, yyn is new state.
New state is final state => don't bother to shift,
just return success.
0, or most negative number => error. */
if (yyn < 0)
{
if (yyn == YYFLAG)
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
else if (yyn == 0)
goto yyerrlab;
if (yyn == YYFINAL)
YYACCEPT;
/* Shift the lookahead token. */
#ifdef YYDEBUG
if (yydebug)
fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif
/* Discard the token being shifted unless it is eof. */
if (yychar != YYEOF)
yychar = YYEMPTY;
*++yyvsp = yylval;
#ifdef YYLSP_NEEDED
*++yylsp = yylloc;
#endif
/* count tokens shifted since error; after three, turn off error status. */
if (yyerrstatus) yyerrstatus--;
yystate = yyn;
goto yynewstate;
/* Do the default action for the current state. */
yydefault:
yyn = yydefact[yystate];
if (yyn == 0)
goto yyerrlab;
/* Do a reduction. yyn is the number of a rule to reduce with. */
yyreduce:
yylen = yyr2[yyn];
yyval = yyvsp[1-yylen]; /* implement default value of the action */
#ifdef YYDEBUG
if (yydebug)
{
if (yylen == 1)
fprintf (stderr, "Reducing 1 value via line %d, ",
yyrline[yyn]);
else
fprintf (stderr, "Reducing %d values via line %d, ",
yylen, yyrline[yyn]);
}
#endif
switch (yyn) {
case 2:
#line 224 "cplus-parse.y"
{ finish_file (); ;
break;}
case 3:
#line 232 "cplus-parse.y"
{yyval.ttype = NULL_TREE; ;
break;}
case 5:
#line 233 "cplus-parse.y"
{yyval.ttype = NULL_TREE; ;
break;}
case 7:
#line 238 "cplus-parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
break;}
case 8:
#line 240 "cplus-parse.y"
{ if (pending_inlines) do_pending_inlines (); ;
break;}
case 10:
#line 243 "cplus-parse.y"
{ if (pedantic)
warning ("ANSI C forbids use of `asm' keyword");
if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
assemble_asm (yyvsp[-2].ttype); ;
break;}
case 11:
#line 248 "cplus-parse.y"
{ pop_lang_context (); ;
break;}
case 12:
#line 250 "cplus-parse.y"
{ pop_lang_context (); ;
break;}
case 13:
#line 252 "cplus-parse.y"
{ if (pending_inlines) do_pending_inlines ();
pop_lang_context (); ;
break;}
case 14:
#line 255 "cplus-parse.y"
{ if (pending_inlines) do_pending_inlines ();
pop_lang_context (); ;
break;}
case 15:
#line 261 "cplus-parse.y"
{ push_lang_context (yyvsp[0].ttype); ;
break;}
case 17:
#line 268 "cplus-parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
break;}
case 18:
#line 270 "cplus-parse.y"
{ declare_overloaded (yyvsp[0].ttype); ;
break;}
case 19:
#line 274 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 20:
#line 279 "cplus-parse.y"
{ if (pedantic)
error ("ANSI C forbids data definition lacking type or storage class");
else if (! flag_traditional)
warning ("data definition lacks type or storage class"); ;
break;}
case 21:
#line 284 "cplus-parse.y"
{;
break;}
case 22:
#line 287 "cplus-parse.y"
{ tree d;
d = start_decl (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, NULL_TREE);
finish_decl (d, NULL_TREE, NULL_TREE);
;
break;}
case 23:
#line 292 "cplus-parse.y"
{
end_exception_decls ();
note_got_semicolon (yyvsp[-2].ttype);
;
break;}
case 24:
#line 298 "cplus-parse.y"
{ tree d;
d = start_decl (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, NULL_TREE);
finish_decl (d, NULL_TREE, NULL_TREE);
end_exception_decls ();
note_got_semicolon (yyvsp[-2].ttype);
;
break;}
case 25:
#line 305 "cplus-parse.y"
{ error ("empty declaration"); ;
break;}
case 26:
#line 307 "cplus-parse.y"
{
shadow_tag (yyvsp[-1].ttype);
note_got_semicolon (yyvsp[-1].ttype);
;
break;}
case 30:
#line 318 "cplus-parse.y"
{
finish_function (lineno, 1);
/* finish_function performs these three statements:
expand_end_bindings (getdecls (), 1, 0);
poplevel (1, 1, 0);
expand_end_bindings (0, 0, 0);
poplevel (0, 0, 1);
*/
;
break;}
case 31:
#line 330 "cplus-parse.y"
{
finish_function (lineno, 1);
/* finish_function performs these three statements:
expand_end_bindings (getdecls (), 1, 0);
poplevel (1, 1, 0);
expand_end_bindings (0, 0, 0);
poplevel (0, 0, 1);
*/
;
break;}
case 32:
#line 342 "cplus-parse.y"
{ finish_function (lineno, 0); ;
break;}
case 33:
#line 344 "cplus-parse.y"
{ finish_function (lineno, 0); ;
break;}
case 34:
#line 346 "cplus-parse.y"
{ finish_function (lineno, 0); ;
break;}
case 35:
#line 348 "cplus-parse.y"
{;
break;}
case 36:
#line 350 "cplus-parse.y"
{;
break;}
case 37:
#line 352 "cplus-parse.y"
{;
break;}
case 38:
#line 357 "cplus-parse.y"
{ if (! start_function (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
YYERROR;
reinit_parse_for_function (); ;
break;}
case 39:
#line 361 "cplus-parse.y"
{ if (! start_function (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
YYERROR;
reinit_parse_for_function (); ;
break;}
case 40:
#line 365 "cplus-parse.y"
{ if (! start_function (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype, 0))
YYERROR;
reinit_parse_for_function (); ;
break;}
case 41:
#line 369 "cplus-parse.y"
{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype), yyvsp[0].ttype, 0))
YYERROR;
reinit_parse_for_function (); ;
break;}
case 42:
#line 373 "cplus-parse.y"
{ if (! start_function (NULL_TREE, build_parse_node (CALL_EXPR, yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype), yyvsp[0].ttype, 0))
YYERROR;
reinit_parse_for_function (); ;
break;}
case 43:
#line 377 "cplus-parse.y"
{ start_function (NULL_TREE, yyvsp[0].ttype, NULL_TREE, 1);
reinit_parse_for_function (); ;
break;}
case 44:
#line 384 "cplus-parse.y"
{
tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-5].ttype), yyvsp[-3].ttype, yyvsp[-1].ttype);
yyval.ttype = start_method (TREE_CHAIN (yyvsp[-5].ttype), decl, yyvsp[0].ttype);
if (! yyval.ttype)
YYERROR;
if (yychar == YYEMPTY)
yychar = YYLEX;
reinit_parse_for_method (yychar, yyval.ttype); ;
break;}
case 45:
#line 393 "cplus-parse.y"
{
tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-3].ttype), empty_parms (), yyvsp[-1].ttype);
yyval.ttype = start_method (TREE_CHAIN (yyvsp[-3].ttype), decl, yyvsp[0].ttype);
if (! yyval.ttype)
YYERROR;
if (yychar == YYEMPTY)
yychar = YYLEX;
reinit_parse_for_method (yychar, yyval.ttype); ;
break;}
case 46:
#line 402 "cplus-parse.y"
{ yyval.ttype = start_method (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
if (! yyval.ttype)
YYERROR;
if (yychar == YYEMPTY)
yychar = YYLEX;
reinit_parse_for_method (yychar, yyval.ttype); ;
break;}
case 47:
#line 409 "cplus-parse.y"
{
tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-5].ttype), yyvsp[-3].ttype, yyvsp[-1].ttype);
yyval.ttype = start_method (TREE_CHAIN (yyvsp[-5].ttype), decl, yyvsp[0].ttype);
if (! yyval.ttype)
YYERROR;
if (yychar == YYEMPTY)
yychar = YYLEX;
reinit_parse_for_method (yychar, yyval.ttype); ;
break;}
case 48:
#line 418 "cplus-parse.y"
{
tree decl = build_parse_node (CALL_EXPR, TREE_VALUE (yyvsp[-3].ttype), empty_parms (), yyvsp[-1].ttype);
yyval.ttype = start_method (TREE_CHAIN (yyvsp[-3].ttype), decl, yyvsp[0].ttype);
if (! yyval.ttype)
YYERROR;
if (yychar == YYEMPTY)
yychar = YYLEX;
reinit_parse_for_method (yychar, yyval.ttype); ;
break;}
case 49:
#line 427 "cplus-parse.y"
{ yyval.ttype = start_method (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
if (! yyval.ttype)
YYERROR;
if (yychar == YYEMPTY)
yychar = YYLEX;
reinit_parse_for_method (yychar, yyval.ttype); ;
break;}
case 50:
#line 434 "cplus-parse.y"
{ yyval.ttype = start_method (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype);
if (! yyval.ttype)
YYERROR;
if (yychar == YYEMPTY)
yychar = YYLEX;
reinit_parse_for_method (yychar, yyval.ttype); ;
break;}
case 51:
#line 443 "cplus-parse.y"
{
if (! current_function_parms_stored)
store_parm_decls ();
yyval.ttype = yyvsp[0].ttype;
;
break;}
case 52:
#line 451 "cplus-parse.y"
{
extern tree value_identifier;
tree result;
result = DECL_RESULT (current_function_decl);
if (DECL_NAME (result) == value_identifier)
DECL_NAME (result) = yyvsp[-1].ttype;
else
error ("return identifier `%s' already in place",
IDENTIFIER_POINTER (DECL_NAME (result)));
store_return_init (yyvsp[0].ttype);
;
break;}
case 53:
#line 464 "cplus-parse.y"
{
extern tree value_identifier;
tree result;
result = DECL_RESULT (current_function_decl);
if (DECL_NAME (result) == value_identifier)
DECL_NAME (result) = yyvsp[-3].ttype;
else
error ("return identifier `%s' already in place",
IDENTIFIER_POINTER (DECL_NAME (result)));
store_return_init (yyvsp[-1].ttype);
;
break;}
case 54:
#line 477 "cplus-parse.y"
{
extern tree value_identifier;
tree result;
result = DECL_RESULT (current_function_decl);
if (DECL_NAME (result) == value_identifier)
DECL_NAME (result) = yyvsp[-1].ttype;
else
error ("return identifier `%s' already in place",
IDENTIFIER_POINTER (DECL_NAME (result)));
store_return_init (NULL_TREE);
;
break;}
case 55:
#line 493 "cplus-parse.y"
{ if (yyvsp[0].itype == 0)
error ("no base initializers given following ':'");
setup_vtbl_ptr (); ;
break;}
case 56:
#line 500 "cplus-parse.y"
{
int preserve = (current_class_type
&& TYPE_USES_VIRTUAL_BASECLASSES (current_class_type));
preserve = 0; /* "in charge" arg means we no longer
need this hack. */
if (! current_function_parms_stored)
store_parm_decls ();
else if (preserve)
preserve_data ();
/* Flag that we are processing base and member initializers. */
current_vtable_decl = error_mark_node;
if (DECL_CONSTRUCTOR_P (current_function_decl))
{
/* Make a contour for the initializer list. */
pushlevel (0);
clear_last_expr ();
expand_start_bindings (0);
}
else if (current_class_type == NULL_TREE)
error ("base initializers not allowed for non-member functions");
else if (! DECL_CONSTRUCTOR_P (current_function_decl))
error ("only constructors take base initializers");
;
break;}
case 57:
#line 529 "cplus-parse.y"
{ yyval.itype = 0; ;
break;}
case 58:
#line 531 "cplus-parse.y"
{ yyval.itype = 1; ;
break;}
case 61:
#line 539 "cplus-parse.y"
{
if (current_class_name && pedantic)
warning ("old style base class initialization; use `%s (...)'",
IDENTIFIER_POINTER (current_class_name));
expand_member_init (C_C_D, NULL_TREE, yyvsp[-1].ttype);
;
break;}
case 62:
#line 546 "cplus-parse.y"
{
if (current_class_name && pedantic)
warning ("old style base class initialization; use `%s (...)'",
IDENTIFIER_POINTER (current_class_name));
expand_member_init (C_C_D, NULL_TREE, void_type_node);
;
break;}
case 63:
#line 553 "cplus-parse.y"
{
expand_member_init (C_C_D, yyvsp[-3].ttype, yyvsp[-1].ttype);
;
break;}
case 64:
#line 557 "cplus-parse.y"
{ expand_member_init (C_C_D, yyvsp[-1].ttype, void_type_node); ;
break;}
case 65:
#line 559 "cplus-parse.y"
{
tree base, basetype;
tree scopes = yyvsp[-4].ttype;
if (TREE_CODE (scopes) == SCOPE_REF)
/* just a pain to do this right now. */
abort ();
if (current_class_type == NULL_TREE
|| ! is_aggr_typedef (scopes, 1))
break;
basetype = get_base_type (TREE_TYPE (TREE_TYPE (scopes)),
current_class_type, 1);
if (basetype == error_mark_node)
break;
if (basetype == 0)
{
error_not_base_type (TREE_TYPE (TREE_TYPE (scopes)), current_class_type);
break;
}
base = convert_pointer_to (basetype, current_class_decl);
expand_member_init (build_indirect_ref (base), yyvsp[-3].ttype, yyvsp[-1].ttype);
;
break;}
case 66:
#line 584 "cplus-parse.y"
{
tree basetype, base;
tree scopes = yyvsp[-2].ttype;
if (TREE_CODE (scopes) == SCOPE_REF)
/* just a pain to do this right now. */
abort ();
if (current_class_type == NULL_TREE
|| ! is_aggr_typedef (scopes, 1))
break;
basetype = get_base_type (TREE_TYPE (TREE_TYPE (scopes)),
current_class_type, 1);
if (basetype == error_mark_node)
break;
if (basetype == 0)
{
error_not_base_type (TREE_TYPE (TREE_TYPE (scopes)), current_class_type);
break;
}
base = convert_pointer_to (basetype, current_class_decl);
expand_member_init (build_indirect_ref (base), yyvsp[-1].ttype, void_type_node);
;
break;}
case 71:
#line 618 "cplus-parse.y"
{ yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
break;}
case 72:
#line 620 "cplus-parse.y"
{ yyval.ttype = hack_operator (yyvsp[0].ttype);
if (yyval.ttype == error_mark_node)
yyval.ttype = get_identifier ("<missing operator>"); ;
break;}
case 73:
#line 624 "cplus-parse.y"
{ yyval.ttype = hack_wrapper (yyvsp[-1].itype, NULL_TREE, yyvsp[0].ttype); ;
break;}
case 74:
#line 626 "cplus-parse.y"
{ yyval.ttype = hack_wrapper (yyvsp[-1].itype, NULL_TREE, yyvsp[0].ttype); ;
break;}
case 75:
#line 628 "cplus-parse.y"
{ yyval.ttype = hack_wrapper (yyvsp[-1].itype, NULL_TREE, yyvsp[0].ttype); ;
break;}
case 76:
#line 630 "cplus-parse.y"
{ yyval.ttype = hack_wrapper (yyvsp[-2].itype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 77:
#line 632 "cplus-parse.y"
{ yyval.ttype = hack_wrapper (yyvsp[-2].itype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 78:
#line 636 "cplus-parse.y"
{ yyval.itype = 0; ;
break;}
case 79:
#line 638 "cplus-parse.y"
{ yyval.itype = 1; ;
break;}
case 80:
#line 640 "cplus-parse.y"
{ yyval.itype = 2; ;
break;}
case 81:
#line 644 "cplus-parse.y"
{ yyval.code = NEGATE_EXPR; ;
break;}
case 82:
#line 646 "cplus-parse.y"
{ yyval.code = CONVERT_EXPR; ;
break;}
case 83:
#line 648 "cplus-parse.y"
{ yyval.code = PREINCREMENT_EXPR; ;
break;}
case 84:
#line 650 "cplus-parse.y"
{ yyval.code = PREDECREMENT_EXPR; ;
break;}
case 85:
#line 652 "cplus-parse.y"
{ yyval.code = TRUTH_NOT_EXPR; ;
break;}
case 86:
#line 656 "cplus-parse.y"
{ yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
break;}
case 87:
#line 659 "cplus-parse.y"
{
if (TREE_CODE (yyvsp[0].ttype) == CALL_EXPR
&& TYPE_NEEDS_DESTRUCTOR (TREE_TYPE (yyvsp[0].ttype)))
yyval.ttype = cleanup_after_call (yyvsp[0].ttype);
;
break;}
case 88:
#line 668 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 90:
#line 674 "cplus-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 91:
#line 676 "cplus-parse.y"
{ chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
break;}
case 92:
#line 678 "cplus-parse.y"
{ chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, error_mark_node)); ;
break;}
case 93:
#line 683 "cplus-parse.y"
{
if (TREE_CODE (yyvsp[0].ttype) == TYPE_EXPR)
yyval.ttype = build_component_type_expr (C_C_D, yyvsp[0].ttype, NULL_TREE, 1);
else
yyval.ttype = yyvsp[0].ttype;
;
break;}
case 94:
#line 690 "cplus-parse.y"
{ yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
break;}
case 95:
#line 692 "cplus-parse.y"
{ yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
break;}
case 96:
#line 694 "cplus-parse.y"
{ yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
break;}
case 97:
#line 696 "cplus-parse.y"
{ yyval.ttype = build_x_unary_op (yyvsp[-1].code, yyvsp[0].ttype);
if (yyvsp[-1].code == NEGATE_EXPR && TREE_CODE (yyvsp[0].ttype) == INTEGER_CST)
TREE_NEGATED_INT (yyval.ttype) = 1;
;
break;}
case 98:
#line 701 "cplus-parse.y"
{ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
&& TREE_PACKED (TREE_OPERAND (yyvsp[0].ttype, 1)))
error ("sizeof applied to a bit-field");
/* ANSI says arrays and functions are converted inside comma.
But we can't really convert them in build_compound_expr
because that would break commas in lvalues.
So do the conversion here if operand was a comma. */
if (TREE_CODE (yyvsp[0].ttype) == COMPOUND_EXPR
&& (TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == ARRAY_TYPE
|| TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == FUNCTION_TYPE))
yyvsp[0].ttype = default_conversion (yyvsp[0].ttype);
yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
break;}
case 99:
#line 714 "cplus-parse.y"
{ yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
break;}
case 100:
#line 716 "cplus-parse.y"
{ if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
&& TREE_PACKED (TREE_OPERAND (yyvsp[0].ttype, 1)))
error ("`__alignof' applied to a bit-field");
if (TREE_CODE (yyvsp[0].ttype) == INDIRECT_REF)
{
tree t = TREE_OPERAND (yyvsp[0].ttype, 0);
tree best = t;
int bestalign = TYPE_ALIGN (TREE_TYPE (TREE_TYPE (t)));
while (TREE_CODE (t) == NOP_EXPR
&& TREE_CODE (TREE_TYPE (TREE_OPERAND (t, 0))) == POINTER_TYPE)
{
int thisalign;
t = TREE_OPERAND (t, 0);
thisalign = TYPE_ALIGN (TREE_TYPE (TREE_TYPE (t)));
if (thisalign > bestalign)
best = t, bestalign = thisalign;
}
yyval.ttype = c_alignof (TREE_TYPE (TREE_TYPE (best)));
}
else
{
/* ANSI says arrays and fns are converted inside comma.
But we can't convert them in build_compound_expr
because that would break commas in lvalues.
So do the conversion here if operand was a comma. */
if (TREE_CODE (yyvsp[0].ttype) == COMPOUND_EXPR
&& (TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == ARRAY_TYPE
|| TREE_CODE (TREE_TYPE (yyvsp[0].ttype)) == FUNCTION_TYPE))
yyvsp[0].ttype = default_conversion (yyvsp[0].ttype);
yyval.ttype = c_alignof (TREE_TYPE (yyvsp[0].ttype));
}
;
break;}
case 101:
#line 749 "cplus-parse.y"
{ yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
break;}
case 102:
#line 752 "cplus-parse.y"
{ yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 103:
#line 754 "cplus-parse.y"
{ yyval.ttype = build_new (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 104:
#line 756 "cplus-parse.y"
{ yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE); ;
break;}
case 105:
#line 758 "cplus-parse.y"
{ yyval.ttype = build_new (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 106:
#line 760 "cplus-parse.y"
{ yyval.ttype = build_new (yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE); ;
break;}
case 107:
#line 763 "cplus-parse.y"
{ yyungetc (':', 1);
yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 108:
#line 767 "cplus-parse.y"
{ tree expr = convert_from_reference (yyvsp[0].ttype);
tree type = TREE_TYPE (expr);
if (integer_zerop (expr))
yyval.ttype = build1 (NOP_EXPR, void_type_node, expr);
else if (TREE_CODE (type) != POINTER_TYPE)
{
error ("non-pointer type to `delete'");
yyval.ttype = error_mark_node;
}
else if (! TYPE_LANG_SPECIFIC (TREE_TYPE (type))
|| ! TYPE_USES_VIRTUAL_BASECLASSES (TREE_TYPE (type)))
yyval.ttype = build_delete (type, expr, integer_one_node,
LOOKUP_NORMAL, yyvsp[-1].ttype);
else
{
yyval.ttype = build (COMPOUND_EXPR, void_type_node,
build (COMPOUND_EXPR, void_type_node,
build_delete (type, expr, integer_zero_node, LOOKUP_NORMAL, 0),
build_vbase_delete (TREE_TYPE (type),
build_indirect_ref (expr))),
build_x_delete (type, expr, yyvsp[-1].ttype));
}
;
break;}
case 109:
#line 792 "cplus-parse.y"
{
tree maxindex = build_binary_op (MINUS_EXPR, yyvsp[-2].ttype, integer_one_node);
tree exp = convert_from_reference (yyvsp[0].ttype);
tree elt_size = c_sizeof (TREE_TYPE (exp));
if (yychar == YYEMPTY)
yychar = YYLEX;
yyval.ttype = build_vec_delete (exp, maxindex, elt_size, NULL_TREE,
integer_one_node, integer_zero_node);
;
break;}
case 111:
#line 808 "cplus-parse.y"
{ tree type = groktypename (yyvsp[-2].ttype);
yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
break;}
case 112:
#line 811 "cplus-parse.y"
{ tree type = groktypename (yyvsp[-5].ttype);
tree init = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
if (pedantic)
warning ("ANSI C forbids constructor-expressions");
/* Indicate that this was a GNU C constructor expression. */
TREE_HAS_CONSTRUCTOR (init) = 1;
yyval.ttype = digest_init (type, init, 0);
if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
{
int failure = complete_array_type (type, yyval.ttype, 1);
if (failure)
abort ();
}
;
break;}
case 114:
#line 830 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 115:
#line 832 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 116:
#line 834 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 117:
#line 836 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 118:
#line 838 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 119:
#line 840 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 120:
#line 842 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 121:
#line 844 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 122:
#line 846 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 123:
#line 848 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 124:
#line 850 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 125:
#line 852 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 126:
#line 854 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 127:
#line 856 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 128:
#line 858 "cplus-parse.y"
{ yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 129:
#line 860 "cplus-parse.y"
{ yyval.ttype = build_x_conditional_expr (yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 130:
#line 862 "cplus-parse.y"
{ yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype); ;
break;}
case 131:
#line 864 "cplus-parse.y"
{ register tree rval;
if (rval = build_opfncall (MODIFY_EXPR, LOOKUP_NORMAL, yyvsp[-2].ttype, yyvsp[0].ttype, yyvsp[-1].code))
yyval.ttype = rval;
else
yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
break;}
case 132:
#line 872 "cplus-parse.y"
{ yyval.ttype = build_m_component_ref (yyvsp[-2].ttype, build_x_indirect_ref (yyvsp[0].ttype, "unary *")); ;
break;}
case 133:
#line 874 "cplus-parse.y"
{ yyval.ttype = build_m_component_ref (yyvsp[-2].ttype, build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype)); ;
break;}
case 134:
#line 876 "cplus-parse.y"
{ yyval.ttype = build_m_component_ref (yyvsp[-2].ttype, build_x_unary_op (yyvsp[-1].code, yyvsp[0].ttype)); ;
break;}
case 135:
#line 878 "cplus-parse.y"
{ tree type = groktypename (yyvsp[-2].ttype);
yyval.ttype = build_m_component_ref (yyvsp[-4].ttype, build_c_cast (type, yyvsp[0].ttype)); ;
break;}
case 136:
#line 881 "cplus-parse.y"
{ yyval.ttype = build_m_component_ref (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 137:
#line 886 "cplus-parse.y"
{ yyval.ttype = lastiddecl;
if (yychar == YYEMPTY)
yychar = YYLEX;
/* Scope class declarations before global
declarations. */
if (yyval.ttype == IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype)
&& current_class_type != 0
&& TYPE_SIZE (current_class_type) == 0)
{
/* Could be from one of the base classes. */
tree field = lookup_field (current_class_type, yyvsp[0].ttype, 1);
if (field == 0)
;
else if (field == error_mark_node)
/* We have already generated the error message.
But we still want to return this value. */
yyval.ttype = lookup_field (current_class_type, yyvsp[0].ttype, 0);
else if (TREE_CODE (field) == VAR_DECL
|| TREE_CODE (field) == CONST_DECL)
yyval.ttype = field;
else if (TREE_CODE (field) != FIELD_DECL)
abort ();
else
{
error_with_decl (field, "invalid use of member `%s' from base class `%s'",
TYPE_NAME_STRING (DECL_FIELD_CONTEXT (field)));
yyval.ttype = error_mark_node;
break;
}
}
if (!yyval.ttype || yyval.ttype == error_mark_node)
{
if (yychar == '(' || yychar == LEFT_RIGHT)
{
yyval.ttype = implicitly_declare (yyvsp[0].ttype);
assemble_external (yyval.ttype);
TREE_USED (yyval.ttype) = 1;
}
else if (current_function_decl == 0)
{
error ("`%s' undeclared, outside of functions",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = error_mark_node;
}
else
{
if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node
|| IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype) != current_function_decl)
{
error ("`%s' undeclared (first use this function)",
IDENTIFIER_POINTER (yyvsp[0].ttype));
if (! undeclared_variable_notice)
{
error ("(Each undeclared identifier is reported only once");
error ("for each function it appears in.)");
undeclared_variable_notice = 1;
}
}
yyval.ttype = error_mark_node;
/* Prevent repeated error messages. */
IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
SET_IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype, current_function_decl);
}
}
/* TREE_USED is set in `hack_identifier'. */
if (TREE_CODE (yyval.ttype) == CONST_DECL)
{
if (IDENTIFIER_CLASS_VALUE (yyvsp[0].ttype) == yyval.ttype)
{
/* Check visibility. */
enum visibility_type visibility
= compute_visibility (CLASSTYPE_AS_LIST (current_class_type), yyval.ttype);
if (visibility == visibility_private)
error_with_decl (yyval.ttype, "enum `%s' is private");
/* protected is OK, since it's an enum of `this'. */
}
yyval.ttype = DECL_INITIAL (yyval.ttype);
}
else yyval.ttype = hack_identifier (yyval.ttype, yyvsp[0].ttype, yychar);
;
break;}
case 138:
#line 969 "cplus-parse.y"
{
tree op = hack_operator (yyvsp[0].ttype);
yyval.ttype = lookup_name (op);
if (yyval.ttype == NULL_TREE)
{
error ("operator %s not defined", operator_name_string (op));
yyval.ttype = error_mark_node;
}
;
break;}
case 140:
#line 980 "cplus-parse.y"
{ yyval.ttype = combine_strings (yyvsp[0].ttype); ;
break;}
case 141:
#line 982 "cplus-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 142:
#line 984 "cplus-parse.y"
{ yyval.ttype = error_mark_node; ;
break;}
case 143:
#line 986 "cplus-parse.y"
{ if (current_function_decl == 0)
{
error ("braced-group within expression allowed only inside a function");
YYERROR;
}
keep_next_level ();
yyval.ttype = expand_start_stmt_expr (); ;
break;}
case 144:
#line 994 "cplus-parse.y"
{ tree rtl_exp;
if (pedantic)
warning ("ANSI C forbids braced-groups within expressions");
rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype);
yyval.ttype = yyvsp[-1].ttype;
TREE_USED (yyval.ttype) = 0;
/* Since the statements have side effects,
consider this volatile. */
TREE_VOLATILE (yyval.ttype) = 1;
TREE_TYPE (yyval.ttype) = TREE_TYPE (rtl_exp);
STMT_BODY (yyval.ttype) = rtl_exp; ;
break;}
case 145:
#line 1006 "cplus-parse.y"
{ yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_decl); ;
break;}
case 146:
#line 1008 "cplus-parse.y"
{ yyval.ttype = build_x_function_call (yyvsp[-1].ttype, NULL_TREE, current_class_decl); ;
break;}
case 147:
#line 1010 "cplus-parse.y"
{
do_array:
{
tree type = TREE_TYPE (yyvsp[-3].ttype);
if (type == error_mark_node || yyvsp[-1].ttype == error_mark_node)
yyval.ttype = error_mark_node;
else if (type == NULL_TREE)
{
/* Something has gone very wrong. Assume we
are mistakenly reducing an expression
instead of a declaration. */
error ("parser may be lost: is there a '{' missing somewhere?");
yyval.ttype = NULL_TREE;
}
else
{
if (TREE_CODE (type) == OFFSET_TYPE)
type = TREE_TYPE (type);
if (TREE_CODE (type) == REFERENCE_TYPE)
type = TREE_TYPE (type);
if (TYPE_LANG_SPECIFIC (type) &&
TYPE_OVERLOADS_ARRAY_REF (type))
yyval.ttype = build_opfncall (ARRAY_REF, LOOKUP_NORMAL, yyvsp[-3].ttype, yyvsp[-1].ttype);
else if (TREE_CODE (type) == POINTER_TYPE
|| TREE_CODE (type) == ARRAY_TYPE)
yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype);
else
error("[] applied to non-pointer type");
}
}
;
break;}
case 148:
#line 1043 "cplus-parse.y"
{ yyval.ttype = build_component_ref (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
break;}
case 149:
#line 1045 "cplus-parse.y"
{
tree basetype = (TREE_CODE (yyvsp[-1].ttype) == SCOPE_REF) ? TREE_OPERAND (yyvsp[-1].ttype, 1) : yyvsp[-1].ttype;
if (is_aggr_typedef (basetype, 1))
{
basetype = TREE_TYPE (TREE_TYPE (basetype));
if (yyvsp[-2].ttype == error_mark_node)
yyval.ttype = error_mark_node;
else if (basetype_or_else (basetype, TREE_TYPE (yyvsp[-2].ttype)))
yyval.ttype = build_component_ref (build_scoped_ref (yyvsp[-2].ttype, yyvsp[-1].ttype), yyvsp[0].ttype, NULL_TREE, 1);
else
yyval.ttype = error_mark_node;
}
else yyval.ttype = error_mark_node;
;
break;}
case 150:
#line 1061 "cplus-parse.y"
{ yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype); ;
break;}
case 151:
#line 1063 "cplus-parse.y"
{ yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype); ;
break;}
case 152:
#line 1067 "cplus-parse.y"
{ if (current_class_decl)
{
#ifdef WARNING_ABOUT_CCD
TREE_USED (current_class_decl) = 1;
#endif
yyval.ttype = current_class_decl;
}
else if (current_function_decl
&& DECL_STATIC_FUNCTION_P (current_function_decl))
{
error ("`this' is unavailable for static member functions");
yyval.ttype = error_mark_node;
}
else
{
if (current_function_decl)
error ("invalid use of `this' in non-member function");
else
error ("invalid use of `this' at top level");
yyval.ttype = error_mark_node;
}
;
break;}
case 153:
#line 1090 "cplus-parse.y"
{
tree type;
tree id = yyvsp[-3].ttype;
/* This is a C cast in C++'s `functional' notation. */
if (yyvsp[-1].ttype == error_mark_node)
{
yyval.ttype = error_mark_node;
break;
}
#if 0
if (yyvsp[-1].ttype == NULL_TREE)
{
error ("cannot cast null list to type `%s'",
IDENTIFIER_POINTER (TYPE_NAME (yyvsp[-3].ttype)));
yyval.ttype = error_mark_node;
break;
}
#endif
if (type == error_mark_node)
yyval.ttype = error_mark_node;
else
{
if (id == ridpointers[(int) RID_CONST])
type = build_type_variant (integer_type_node, 1, 0);
else if (id == ridpointers[(int) RID_VOLATILE])
type = build_type_variant (integer_type_node, 0, 1);
else if (id == ridpointers[(int) RID_FRIEND])
{
error ("cannot cast expression to `friend' type");
yyval.ttype = error_mark_node;
break;
}
else abort ();
yyval.ttype = build_c_cast (type, build_compound_expr (yyvsp[-1].ttype));
}
;
break;}
case 154:
#line 1128 "cplus-parse.y"
{ yyval.ttype = build_functional_cast (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 155:
#line 1130 "cplus-parse.y"
{ yyval.ttype = build_functional_cast (yyvsp[-1].ttype, NULL_TREE); ;
break;}
case 156:
#line 1132 "cplus-parse.y"
{
do_scoped_identifier:
yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
if (yychar == YYEMPTY)
yychar = YYLEX;
if (! yyval.ttype)
{
if (yychar == '(' || yychar == LEFT_RIGHT)
{
yyval.ttype = implicitly_declare (yyvsp[0].ttype);
}
else
{
if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node)
error ("undeclared variable `%s' (first use here)",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = error_mark_node;
/* Prevent repeated error messages. */
IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
}
}
else if (TREE_CODE (yyval.ttype) == CONST_DECL)
yyval.ttype = DECL_INITIAL (yyval.ttype);
if (! TREE_USED (yyval.ttype))
{
if (TREE_EXTERNAL (yyval.ttype))
assemble_external (yyval.ttype);
TREE_USED (yyval.ttype) = 1;
}
;
break;}
case 157:
#line 1163 "cplus-parse.y"
{
yyvsp[0].ttype = hack_operator (yyvsp[0].ttype);
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
goto do_scoped_identifier;
do_scoped_operator:
yyval.ttype = yyvsp[0].ttype;
;
break;}
case 158:
#line 1171 "cplus-parse.y"
{ yyval.ttype = build_offset_ref (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 159:
#line 1173 "cplus-parse.y"
{ yyval.ttype = build_member_call (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 160:
#line 1175 "cplus-parse.y"
{ yyval.ttype = build_member_call (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE); ;
break;}
case 161:
#line 1178 "cplus-parse.y"
{ yyval.ttype = build_method_call (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE,
(LOOKUP_NORMAL|LOOKUP_AGGR)); ;
break;}
case 162:
#line 1181 "cplus-parse.y"
{ yyval.ttype = build_method_call (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE, NULL_TREE,
(LOOKUP_NORMAL|LOOKUP_AGGR)); ;
break;}
case 163:
#line 1184 "cplus-parse.y"
{ yyval.ttype = build_scoped_method_call (yyvsp[-5].ttype, yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 164:
#line 1186 "cplus-parse.y"
{ yyval.ttype = build_scoped_method_call (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE); ;
break;}
case 165:
#line 1191 "cplus-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 166:
#line 1193 "cplus-parse.y"
{ yyval.ttype = error_mark_node; ;
break;}
case 167:
#line 1195 "cplus-parse.y"
{ if (current_function_decl == 0)
{
error ("braced-group within expression allowed only inside a function");
YYERROR;
}
yyval.ttype = expand_start_stmt_expr (); ;
break;}
case 168:
#line 1202 "cplus-parse.y"
{ if (pedantic)
warning ("ANSI C forbids braced-groups within expressions");
yyval.ttype = expand_end_stmt_expr (yyvsp[-2].ttype); ;
break;}
case 169:
#line 1206 "cplus-parse.y"
{ yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_decl); ;
break;}
case 170:
#line 1208 "cplus-parse.y"
{ yyval.ttype = build_x_function_call (yyvsp[-1].ttype, NULL_TREE, current_class_decl); ;
break;}
case 171:
#line 1210 "cplus-parse.y"
{ goto do_array; ;
break;}
case 172:
#line 1212 "cplus-parse.y"
{ yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype); ;
break;}
case 173:
#line 1214 "cplus-parse.y"
{ yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype); ;
break;}
case 174:
#line 1216 "cplus-parse.y"
{ goto do_scoped_identifier; ;
break;}
case 175:
#line 1218 "cplus-parse.y"
{ yyvsp[0].ttype = hack_operator (yyvsp[0].ttype);
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
goto do_scoped_identifier;
goto do_scoped_operator;
;
break;}
case 176:
#line 1226 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 177:
#line 1228 "cplus-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 178:
#line 1230 "cplus-parse.y"
{ yyval.ttype = void_type_node; ;
break;}
case 179:
#line 1232 "cplus-parse.y"
{ yyval.ttype = combine_strings (yyvsp[-1].ttype); ;
break;}
case 180:
#line 1234 "cplus-parse.y"
{ if (yyvsp[0].ttype != NULL_TREE
&& TREE_CODE (yyvsp[0].ttype) == TREE_LIST
&& TREE_PURPOSE (yyvsp[0].ttype) != NULL_TREE)
error ("extra `::' before `new' ignored");
else
yyval.ttype = build_tree_list (error_mark_node, yyvsp[0].ttype);
;
break;}
case 181:
#line 1244 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 182:
#line 1246 "cplus-parse.y"
{ if (yyvsp[0].ttype)
error ("extra `::' before `delete' ignored");
yyval.ttype = error_mark_node;
;
break;}
case 184:
#line 1256 "cplus-parse.y"
{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 185:
#line 1261 "cplus-parse.y"
{
if (! current_function_parms_stored)
store_parm_decls ();
setup_vtbl_ptr ();
;
break;}
case 186:
#line 1269 "cplus-parse.y"
{
if (yyvsp[-1].ttype == error_mark_node)
yyval.ttype = error_mark_node;
else
{
tree type = TREE_TYPE (yyvsp[-1].ttype);
if (IS_AGGR_TYPE (type)
|| (TREE_CODE (type) == REFERENCE_TYPE
&& IS_AGGR_TYPE (TREE_TYPE (type))))
yyval.ttype = yyvsp[-1].ttype;
else
{
error ("object in '.' expression is not of aggregate type");
yyval.ttype = error_mark_node;
}
}
;
break;}
case 187:
#line 1288 "cplus-parse.y"
{
yyval.ttype = build_x_arrow (yyvsp[-1].ttype);
;
break;}
case 188:
#line 1295 "cplus-parse.y"
{
resume_momentary (yyvsp[-1].itype);
note_got_semicolon (yyvsp[-2].ttype);
;
break;}
case 189:
#line 1301 "cplus-parse.y"
{ tree d;
int yes = suspend_momentary ();
d = start_decl (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, NULL_TREE);
finish_decl (d, NULL_TREE, NULL_TREE);
resume_momentary (yes);
note_got_semicolon (yyvsp[-2].ttype);
;
break;}
case 190:
#line 1309 "cplus-parse.y"
{ resume_momentary (yyvsp[-1].itype); ;
break;}
case 191:
#line 1312 "cplus-parse.y"
{ tree d;
int yes = suspend_momentary ();
d = start_decl (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, NULL_TREE);
finish_decl (d, NULL_TREE, NULL_TREE);
resume_momentary (yes);
;
break;}
case 192:
#line 1319 "cplus-parse.y"
{
shadow_tag (yyvsp[-1].ttype);
note_got_semicolon (yyvsp[-1].ttype);
;
break;}
case 193:
#line 1324 "cplus-parse.y"
{ warning ("empty declaration"); ;
break;}
case 196:
#line 1341 "cplus-parse.y"
{ yyval.ttype = list_hash_lookup_or_cons (yyvsp[0].ttype); ;
break;}
case 197:
#line 1343 "cplus-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 198:
#line 1345 "cplus-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 199:
#line 1347 "cplus-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
break;}
case 200:
#line 1353 "cplus-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 201:
#line 1355 "cplus-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 202:
#line 1357 "cplus-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 203:
#line 1359 "cplus-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 204:
#line 1368 "cplus-parse.y"
{ yyval.ttype = list_hash_lookup_or_cons (yyvsp[0].ttype); ;
break;}
case 205:
#line 1370 "cplus-parse.y"
{ yyval.ttype = list_hash_lookup_or_cons (yyvsp[0].ttype); ;
break;}
case 206:
#line 1372 "cplus-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 207:
#line 1374 "cplus-parse.y"
{ yyval.ttype = hash_tree_chain (yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 208:
#line 1386 "cplus-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 209:
#line 1388 "cplus-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 210:
#line 1390 "cplus-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 211:
#line 1392 "cplus-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
break;}
case 212:
#line 1397 "cplus-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 213:
#line 1399 "cplus-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 217:
#line 1410 "cplus-parse.y"
{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
if (pedantic)
warning ("ANSI C forbids `typeof'"); ;
break;}
case 218:
#line 1414 "cplus-parse.y"
{ yyval.ttype = groktypename (yyvsp[-1].ttype);
if (pedantic)
warning ("ANSI C forbids `typeof'"); ;
break;}
case 222:
#line 1428 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 223:
#line 1430 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 224:
#line 1432 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 225:
#line 1434 "cplus-parse.y"
{ yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
if (pedantic)
warning ("ANSI C forbids `typeof'") ;
break;}
case 226:
#line 1438 "cplus-parse.y"
{ yyval.ttype = groktypename (yyvsp[-1].ttype);
if (pedantic)
warning ("ANSI C forbids `typeof'") ;
break;}
case 231:
#line 1455 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 232:
#line 1457 "cplus-parse.y"
{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
yyval.ttype = yyvsp[-1].ttype;
if (pedantic)
warning ("ANSI C forbids use of `asm' keyword");
;
break;}
case 233:
#line 1466 "cplus-parse.y"
{ current_declspecs = yyvsp[-5].ttype;
yyvsp[0].itype = suspend_momentary ();
yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype); ;
break;}
case 234:
#line 1471 "cplus-parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype);
yyval.itype = yyvsp[-2].itype; ;
break;}
case 235:
#line 1474 "cplus-parse.y"
{ tree d;
current_declspecs = yyvsp[-4].ttype;
yyval.itype = suspend_momentary ();
d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
break;}
case 236:
#line 1483 "cplus-parse.y"
{ yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype); ;
break;}
case 237:
#line 1486 "cplus-parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
break;}
case 238:
#line 1488 "cplus-parse.y"
{ tree d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
break;}
case 239:
#line 1494 "cplus-parse.y"
{ current_declspecs = yyvsp[-5].ttype;
yyvsp[0].itype = suspend_momentary ();
yyval.ttype = start_decl (yyvsp[-4].ttype, current_declspecs, 1, yyvsp[-3].ttype); ;
break;}
case 240:
#line 1499 "cplus-parse.y"
{ finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype);
yyval.itype = yyvsp[-2].itype; ;
break;}
case 241:
#line 1502 "cplus-parse.y"
{ tree d;
current_declspecs = yyvsp[-4].ttype;
yyval.itype = suspend_momentary ();
d = start_decl (yyvsp[-3].ttype, current_declspecs, 0, yyvsp[-2].ttype);
finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
break;}
case 242:
#line 1513 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 243:
#line 1515 "cplus-parse.y"
{ yyval.ttype = yyvsp[-2].ttype; ;
break;}
case 246:
#line 1525 "cplus-parse.y"
{ warning ("`%s' attribute directive ignored",
IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = yyvsp[0].ttype; ;
break;}
case 247:
#line 1529 "cplus-parse.y"
{ /* if not "aligned(1)", then issue warning */
if (strcmp (IDENTIFIER_POINTER (yyvsp[-3].ttype), "aligned") != 0
|| TREE_CODE (yyvsp[-1].ttype) != INTEGER_CST
|| TREE_INT_CST_LOW (yyvsp[-1].ttype) != 1)
warning ("`%s' attribute directive ignored",
IDENTIFIER_POINTER (yyvsp[-3].ttype));
yyval.ttype = yyvsp[-3].ttype; ;
break;}
case 248:
#line 1537 "cplus-parse.y"
{ warning ("`%s' attribute directive ignored",
IDENTIFIER_POINTER (yyvsp[-3].ttype));
yyval.ttype = yyvsp[-3].ttype; ;
break;}
case 249:
#line 1544 "cplus-parse.y"
{ ;
break;}
case 250:
#line 1546 "cplus-parse.y"
{ ;
break;}
case 252:
#line 1552 "cplus-parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1;
if (pedantic)
warning ("ANSI C forbids empty initializer braces"); ;
break;}
case 253:
#line 1557 "cplus-parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
break;}
case 254:
#line 1560 "cplus-parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
break;}
case 255:
#line 1563 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 256:
#line 1570 "cplus-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 257:
#line 1572 "cplus-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
break;}
case 258:
#line 1577 "cplus-parse.y"
{ yyvsp[0].itype = suspend_momentary ();
yyval.ttype = start_enum (yyvsp[-1].ttype); ;
break;}
case 259:
#line 1580 "cplus-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
resume_momentary (yyvsp[-4].itype);
check_for_missing_semicolon (yyvsp[-3].ttype); ;
break;}
case 260:
#line 1584 "cplus-parse.y"
{ yyvsp[0].itype = suspend_momentary ();
yyval.ttype = start_enum (make_anon_name ()); ;
break;}
case 261:
#line 1587 "cplus-parse.y"
{ yyval.ttype = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
resume_momentary (yyvsp[-5].itype);
check_for_missing_semicolon (yyvsp[-3].ttype); ;
break;}
case 262:
#line 1591 "cplus-parse.y"
{ yyval.ttype = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 263:
#line 1595 "cplus-parse.y"
{
if (TREE_CODE (yyvsp[-3].ttype) == ENUMERAL_TYPE)
yyval.ttype = yyvsp[-3].ttype;
else if (CLASSTYPE_DECLARED_EXCEPTION (yyvsp[-3].ttype))
yyval.ttype = finish_exception (yyvsp[-3].ttype, yyvsp[-1].ttype);
else
yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-1].ttype, 0, 0);
if (yyvsp[-2].itype & 1)
resume_temporary_allocation ();
if (yyvsp[-2].itype & 2)
resume_momentary (1);
check_for_missing_semicolon (yyval.ttype);
;
break;}
case 264:
#line 1610 "cplus-parse.y"
{ if (TREE_CODE (yyvsp[-4].ttype) == ENUMERAL_TYPE)
yyval.ttype = yyvsp[-4].ttype;
else if (CLASSTYPE_DECLARED_EXCEPTION (yyvsp[-4].ttype))
warning ("empty exception declaration\n");
else
yyval.ttype = finish_struct (yyvsp[-4].ttype, yyvsp[-2].ttype, 1, 1);
if (yyvsp[-3].itype & 1)
resume_temporary_allocation ();
if (yyvsp[-3].itype & 2)
resume_momentary (1);
note_got_semicolon (yyval.ttype);
yyungetc (';', 0); ;
break;}
case 265:
#line 1623 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 269:
#line 1634 "cplus-parse.y"
{ if (pedantic) warning ("comma at end of enumerator list"); ;
break;}
case 270:
#line 1638 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 271:
#line 1640 "cplus-parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 272:
#line 1642 "cplus-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 273:
#line 1644 "cplus-parse.y"
{ error ("storage class specifier `%s' not allow after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype));
;
break;}
case 274:
#line 1647 "cplus-parse.y"
{ error ("type specifier `%s' not allow after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype));
;
break;}
case 275:
#line 1650 "cplus-parse.y"
{ error ("type qualifier `%s' not allow after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype));
;
break;}
case 276:
#line 1653 "cplus-parse.y"
{ error ("no body nor ';' separates two class, struct or union declarations");
;
break;}
case 277:
#line 1658 "cplus-parse.y"
{ yyval.ttype = xref_tag (yyvsp[0].ttype, make_anon_name (), NULL_TREE); ;
break;}
case 278:
#line 1660 "cplus-parse.y"
{ yyval.ttype = xref_tag (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 279:
#line 1662 "cplus-parse.y"
{ yyval.ttype = xref_tag (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 280:
#line 1664 "cplus-parse.y"
{ yyungetc (':', 1);
yyval.ttype = xref_tag (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 281:
#line 1667 "cplus-parse.y"
{ yyval.ttype = xref_tag (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 282:
#line 1672 "cplus-parse.y"
{ if (! is_aggr_typedef (yyvsp[0].ttype, 1))
yyval.ttype = NULL_TREE;
else yyval.ttype = build_tree_list ((tree)visibility_default, yyvsp[0].ttype); ;
break;}
case 283:
#line 1676 "cplus-parse.y"
{ if (! is_aggr_typedef (yyvsp[0].ttype, 1))
yyval.ttype = NULL_TREE;
else yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 284:
#line 1680 "cplus-parse.y"
{ if (! is_aggr_typedef (yyvsp[0].ttype, 1))
yyval.ttype = NULL_TREE;
else yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list ((tree)visibility_default, yyvsp[0].ttype)); ;
break;}
case 285:
#line 1684 "cplus-parse.y"
{ if (! is_aggr_typedef (yyvsp[0].ttype, 1))
yyval.ttype = NULL_TREE;
else yyval.ttype = chainon (yyvsp[-3].ttype, build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype)); ;
break;}
case 286:
#line 1691 "cplus-parse.y"
{ yyval.ttype = (tree)visibility_public; ;
break;}
case 287:
#line 1693 "cplus-parse.y"
{ yyval.ttype = (tree)visibility_private; ;
break;}
case 288:
#line 1695 "cplus-parse.y"
{ if (yyvsp[0].ttype != ridpointers[(int)RID_VIRTUAL])
sorry ("non-virtual visibility");
yyval.ttype = (tree)visibility_default_virtual; ;
break;}
case 289:
#line 1699 "cplus-parse.y"
{ if (yyvsp[-1].ttype == (tree)visibility_private)
error ("base class cannot be public and private");
else if (yyvsp[-1].ttype == (tree)visibility_default_virtual)
yyval.ttype = (tree)visibility_public_virtual; ;
break;}
case 290:
#line 1704 "cplus-parse.y"
{ if (yyvsp[-1].ttype == (tree)visibility_public)
error ("base class cannot be private and public");
else if (yyvsp[-1].ttype == (tree)visibility_default_virtual)
yyval.ttype = (tree)visibility_private_virtual; ;
break;}
case 291:
#line 1709 "cplus-parse.y"
{ if (yyvsp[0].ttype != ridpointers[(int)RID_VIRTUAL])
sorry ("non-virtual visibility");
if (yyvsp[-1].ttype == (tree)visibility_public)
yyval.ttype = (tree)visibility_public_virtual;
else if (yyvsp[-1].ttype == (tree)visibility_private)
yyval.ttype = (tree)visibility_private_virtual; ;
break;}
case 292:
#line 1718 "cplus-parse.y"
{ int temp = allocation_temporary_p ();
int momentary = suspend_momentary ();
if (temp)
end_temporary_allocation ();
yyval.itype = (momentary << 1) | temp;
if (! IS_AGGR_TYPE (yyvsp[-1].ttype))
{
yyvsp[-1].ttype = make_lang_type (RECORD_TYPE);
TYPE_NAME (yyvsp[-1].ttype) = get_identifier ("erroneous type");
}
pushclass (yyvsp[-1].ttype, 0); ;
break;}
case 293:
#line 1732 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 294:
#line 1734 "cplus-parse.y"
{ yyval.ttype = build_tree_list ((tree)visibility_default, yyvsp[0].ttype); ;
break;}
case 295:
#line 1736 "cplus-parse.y"
{ yyval.ttype = chainon (yyvsp[-3].ttype, build_tree_list ((tree)visibility_public, yyvsp[0].ttype)); ;
break;}
case 296:
#line 1738 "cplus-parse.y"
{ yyval.ttype = chainon (yyvsp[-3].ttype, build_tree_list ((tree)visibility_private, yyvsp[0].ttype)); ;
break;}
case 297:
#line 1740 "cplus-parse.y"
{ yyval.ttype = chainon (yyvsp[-3].ttype, build_tree_list ((tree)visibility_protected, yyvsp[0].ttype)); ;
break;}
case 301:
#line 1748 "cplus-parse.y"
{ if (yyvsp[0].ttype == void_type_node) yyval.ttype = NULL_TREE; ;
break;}
case 302:
#line 1750 "cplus-parse.y"
{ if (yyvsp[0].ttype != NULL_TREE && yyvsp[0].ttype != void_type_node)
yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 303:
#line 1753 "cplus-parse.y"
{ if (pedantic)
warning ("extra semicolon in struct or union specified"); ;
break;}
case 304:
#line 1759 "cplus-parse.y"
{
do_components:
if (yyvsp[-1].ttype == void_type_node)
/* We just got some friends.
They have been recorded elsewhere. */
yyval.ttype = NULL_TREE;
else if (yyvsp[-1].ttype == NULL_TREE)
{
tree t = groktypename (build_decl_list (yyvsp[-2].ttype, NULL_TREE));
if (t == NULL_TREE)
{
error ("error in component specification");
yyval.ttype = NULL_TREE;
}
else if (TREE_CODE (t) == UNION_TYPE)
{
/* handle anonymous unions */
if (CLASSTYPE_METHOD_VEC (t))
sorry ("methods in anonymous unions");
yyval.ttype = build_lang_field_decl (FIELD_DECL, NULL_TREE, t);
DECL_ANON_UNION_ELEM (yyval.ttype) = 1;
}
else if (TREE_CODE (t) == ENUMERAL_TYPE)
yyval.ttype = grok_enum_decls (t, NULL_TREE);
else
{
if (TREE_CODE (t) == RECORD_TYPE
&& TYPE_LANG_SPECIFIC (t)
&& CLASSTYPE_DECLARED_EXCEPTION (t))
shadow_tag (yyvsp[-2].ttype);
yyval.ttype = NULL_TREE;
}
}
else
{
tree t = TREE_TYPE (yyvsp[-1].ttype);
if (TREE_CODE (t) == ENUMERAL_TYPE && TREE_NONLOCAL (t))
yyval.ttype = grok_enum_decls (t, yyvsp[-1].ttype);
else
yyval.ttype = yyvsp[-1].ttype;
}
end_exception_decls ();
;
break;}
case 305:
#line 1803 "cplus-parse.y"
{ yyval.ttype = groktypefield (yyvsp[-4].ttype, yyvsp[-2].ttype); ;
break;}
case 306:
#line 1805 "cplus-parse.y"
{ error ("missing ';' before right brace");
yyungetc ('}', 0);
yyval.ttype = groktypefield (yyvsp[-4].ttype, yyvsp[-2].ttype); ;
break;}
case 307:
#line 1809 "cplus-parse.y"
{ yyval.ttype = groktypefield (yyvsp[-2].ttype, empty_parms ()); ;
break;}
case 308:
#line 1811 "cplus-parse.y"
{ error ("missing ';' before right brace");
yyungetc ('}', 0);
yyval.ttype = groktypefield (yyvsp[-2].ttype, empty_parms ()); ;
break;}
case 309:
#line 1815 "cplus-parse.y"
{ goto do_components; ;
break;}
case 310:
#line 1818 "cplus-parse.y"
{ yyval.ttype = grokfield (yyvsp[-1].ttype, yyvsp[-2].ttype, 0, 0, 0, 0); ;
break;}
case 311:
#line 1820 "cplus-parse.y"
{ error ("missing ';' before right brace");
yyungetc ('}', 0);
goto do_components; ;
break;}
case 312:
#line 1824 "cplus-parse.y"
{ yyval.ttype = groktypefield (yyvsp[-4].ttype, yyvsp[-2].ttype); ;
break;}
case 313:
#line 1826 "cplus-parse.y"
{ error ("missing ';' before right brace");
yyungetc ('}', 0);
yyval.ttype = groktypefield (yyvsp[-4].ttype, yyvsp[-2].ttype); ;
break;}
case 314:
#line 1830 "cplus-parse.y"
{ yyval.ttype = groktypefield (yyvsp[-2].ttype, empty_parms ()); ;
break;}
case 315:
#line 1832 "cplus-parse.y"
{ error ("missing ';' before right brace");
yyungetc ('}', 0);
yyval.ttype = groktypefield (yyvsp[-2].ttype, empty_parms ()); ;
break;}
case 316:
#line 1836 "cplus-parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
break;}
case 317:
#line 1838 "cplus-parse.y"
{ error ("missing ';' before right brace");
yyungetc ('}', 0);
yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
break;}
case 318:
#line 1842 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 319:
#line 1847 "cplus-parse.y"
{ yyval.ttype = finish_method (yyvsp[-1].ttype); ;
break;}
case 320:
#line 1849 "cplus-parse.y"
{ yyval.ttype = finish_method (yyvsp[-1].ttype); ;
break;}
case 321:
#line 1851 "cplus-parse.y"
{ yyval.ttype = grokfield (yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE); ;
break;}
case 322:
#line 1853 "cplus-parse.y"
{ error ("missing ';' before right brace");
yyungetc ('}', 0);
yyval.ttype = grokfield (yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE); ;
break;}
case 323:
#line 1860 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 325:
#line 1863 "cplus-parse.y"
{
/* In this context, void_type_node encodes
friends. They have been recorded elsewhere. */
if (yyvsp[-2].ttype == void_type_node)
yyval.ttype = yyvsp[0].ttype;
else
yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype);
;
break;}
case 326:
#line 1875 "cplus-parse.y"
{ current_declspecs = yyvsp[-4].ttype;
yyval.ttype = grokfield (yyvsp[-3].ttype, current_declspecs, yyvsp[-2].ttype, yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 327:
#line 1878 "cplus-parse.y"
{ current_declspecs = yyvsp[-3].ttype;
yyval.ttype = grokbitfield (yyvsp[-2].ttype, current_declspecs, yyvsp[0].ttype); ;
break;}
case 328:
#line 1881 "cplus-parse.y"
{ current_declspecs = yyvsp[-2].ttype;
yyval.ttype = grokbitfield (yyvsp[-1].ttype, current_declspecs, yyvsp[0].ttype); ;
break;}
case 329:
#line 1884 "cplus-parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
break;}
case 330:
#line 1889 "cplus-parse.y"
{ yyval.ttype = grokfield (yyvsp[-3].ttype, current_declspecs, yyvsp[-2].ttype, yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 331:
#line 1891 "cplus-parse.y"
{ yyval.ttype = grokbitfield (yyvsp[-2].ttype, current_declspecs, yyvsp[0].ttype); ;
break;}
case 332:
#line 1893 "cplus-parse.y"
{ yyval.ttype = grokbitfield (yyvsp[-1].ttype, current_declspecs, yyvsp[0].ttype); ;
break;}
case 333:
#line 1895 "cplus-parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
break;}
case 335:
#line 1905 "cplus-parse.y"
{ TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-2].ttype; yyval.ttype = yyvsp[0].ttype; ;
break;}
case 336:
#line 1910 "cplus-parse.y"
{ yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 337:
#line 1912 "cplus-parse.y"
{ yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 338:
#line 1917 "cplus-parse.y"
{ yyval.ttype = build_decl_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 339:
#line 1919 "cplus-parse.y"
{ yyval.ttype = build_decl_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 340:
#line 1924 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 342:
#line 1930 "cplus-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 343:
#line 1932 "cplus-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 344:
#line 1937 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 345:
#line 1939 "cplus-parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 346:
#line 1947 "cplus-parse.y"
{ yyval.itype = suspend_momentary (); ;
break;}
case 347:
#line 1948 "cplus-parse.y"
{ resume_momentary (yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
break;}
case 348:
#line 1954 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 349:
#line 1956 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 350:
#line 1958 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-2].ttype, empty_parms (), yyvsp[0].ttype); ;
break;}
case 351:
#line 1960 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE); ;
break;}
case 352:
#line 1962 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 353:
#line 1964 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
break;}
case 354:
#line 1966 "cplus-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 355:
#line 1968 "cplus-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
break;}
case 356:
#line 1970 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
see_typename (); ;
break;}
case 357:
#line 1973 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
see_typename (); ;
break;}
case 358:
#line 1976 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
see_typename (); ;
break;}
case 359:
#line 1979 "cplus-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
break;}
case 360:
#line 1981 "cplus-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 361:
#line 1983 "cplus-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 363:
#line 1989 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 364:
#line 1991 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 365:
#line 1993 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-2].ttype, empty_parms (), yyvsp[0].ttype); ;
break;}
case 366:
#line 1995 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE); ;
break;}
case 367:
#line 1997 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 368:
#line 1999 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
break;}
case 369:
#line 2001 "cplus-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 370:
#line 2003 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
see_typename (); ;
break;}
case 371:
#line 2006 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
see_typename (); ;
break;}
case 372:
#line 2009 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
see_typename (); ;
break;}
case 373:
#line 2012 "cplus-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 374:
#line 2014 "cplus-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 375:
#line 2022 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 376:
#line 2024 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 377:
#line 2026 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-2].ttype, empty_parms (), yyvsp[0].ttype); ;
break;}
case 378:
#line 2028 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE); ;
break;}
case 379:
#line 2030 "cplus-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 380:
#line 2032 "cplus-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 381:
#line 2034 "cplus-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 382:
#line 2036 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 383:
#line 2038 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
break;}
case 384:
#line 2040 "cplus-parse.y"
{ see_typename (); ;
break;}
case 385:
#line 2044 "cplus-parse.y"
{ see_typename (); ;
break;}
case 386:
#line 2047 "cplus-parse.y"
{ see_typename ();
yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
break;}
case 387:
#line 2050 "cplus-parse.y"
{ see_typename ();
yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
break;}
case 388:
#line 2053 "cplus-parse.y"
{
see_typename ();
yyval.ttype = build_parse_node (WRAPPER_EXPR, yyvsp[0].ttype);
;
break;}
case 389:
#line 2058 "cplus-parse.y"
{
see_typename ();
yyval.ttype = build_parse_node (WRAPPER_EXPR,
build_parse_node (COND_EXPR, yyvsp[0].ttype, NULL_TREE, NULL_TREE));
;
break;}
case 390:
#line 2064 "cplus-parse.y"
{ see_typename ();
yyval.ttype = build_parse_node (ANTI_WRAPPER_EXPR, yyvsp[0].ttype); ;
break;}
case 391:
#line 2067 "cplus-parse.y"
{ see_typename ();
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 392:
#line 2070 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 393:
#line 2072 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-6].ttype,
build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
break;}
case 394:
#line 2075 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-6].ttype,
build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype)); ;
break;}
case 395:
#line 2078 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-4].ttype,
build_parse_node (CALL_EXPR, yyvsp[-2].ttype, empty_parms (), yyvsp[0].ttype)); ;
break;}
case 396:
#line 2081 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-6].ttype, build_parse_node (CALL_EXPR, yyvsp[-4].ttype, NULL_TREE, NULL_TREE)); ;
break;}
case 397:
#line 2083 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, NULL_TREE, yyvsp[0].ttype); ;
break;}
case 400:
#line 2090 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 401:
#line 2095 "cplus-parse.y"
{ see_typename ();
yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 402:
#line 2099 "cplus-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 403:
#line 2101 "cplus-parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 404:
#line 2103 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
see_typename (); ;
break;}
case 405:
#line 2106 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
see_typename (); ;
break;}
case 406:
#line 2109 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype;
see_typename (); ;
break;}
case 407:
#line 2112 "cplus-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 408:
#line 2114 "cplus-parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
break;}
case 409:
#line 2116 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 410:
#line 2118 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, yyvsp[-2].ttype, empty_parms (), yyvsp[0].ttype); ;
break;}
case 411:
#line 2120 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 412:
#line 2122 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
break;}
case 413:
#line 2124 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 414:
#line 2126 "cplus-parse.y"
{ yyval.ttype = build_parse_node (CALL_EXPR, NULL_TREE, empty_parms (), yyvsp[0].ttype); ;
break;}
case 415:
#line 2128 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
break;}
case 416:
#line 2130 "cplus-parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
break;}
case 417:
#line 2132 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 418:
#line 2134 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-3].ttype, yyvsp[0].ttype); ;
break;}
case 419:
#line 2136 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, 0); ;
break;}
case 420:
#line 2138 "cplus-parse.y"
{ yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, 0); ;
break;}
case 425:
#line 2159 "cplus-parse.y"
{
pushlevel (0);
clear_last_expr ();
push_momentary ();
expand_start_bindings (0);
stmt_decl_msg = 0;
;
break;}
case 426:
#line 2172 "cplus-parse.y"
{;
break;}
case 428:
#line 2177 "cplus-parse.y"
{ yyval.ttype = 0; ;
break;}
case 429:
#line 2179 "cplus-parse.y"
{ tree decls;
pop_implicit_try_blocks (NULL_TREE);
decls = getdecls ();
expand_end_bindings (decls, decls != 0, 1);
yyval.ttype = poplevel (decls != 0, 1, 0);
pop_momentary (); ;
break;}
case 430:
#line 2187 "cplus-parse.y"
{ pop_implicit_try_blocks (NULL_TREE);
expand_end_bindings (getdecls (), 0, 1);
yyval.ttype = poplevel (0, 0, 0);
pop_momentary (); ;
break;}
case 431:
#line 2195 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0);
stmt_decl_msg = "if"; ;
break;}
case 432:
#line 2199 "cplus-parse.y"
{ stmt_decl_msg = 0; ;
break;}
case 433:
#line 2204 "cplus-parse.y"
{ finish_stmt (); ;
break;}
case 434:
#line 2206 "cplus-parse.y"
{ if (stmt_decl_msg)
error ("declaration after %s invalid", stmt_decl_msg);
stmt_decl_msg = 0;
finish_stmt (); ;
break;}
case 435:
#line 2211 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
/* Do default conversion if safe and possibly important,
in case within ({...}). */
if ((TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == ARRAY_TYPE
&& lvalue_p (yyvsp[-1].ttype))
|| TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == FUNCTION_TYPE)
yyvsp[-1].ttype = default_conversion (yyvsp[-1].ttype);
expand_cplus_expr_stmt (yyvsp[-1].ttype);
clear_momentary ();
finish_stmt (); ;
break;}
case 436:
#line 2222 "cplus-parse.y"
{ expand_start_else ();
stmt_decl_msg = "else"; ;
break;}
case 437:
#line 2225 "cplus-parse.y"
{ expand_end_else ();
stmt_decl_msg = 0;
finish_stmt (); ;
break;}
case 438:
#line 2229 "cplus-parse.y"
{ expand_end_cond ();
stmt_decl_msg = 0;
finish_stmt (); ;
break;}
case 439:
#line 2233 "cplus-parse.y"
{ emit_nop ();
emit_line_note (input_filename, lineno);
expand_start_loop (1); ;
break;}
case 440:
#line 2237 "cplus-parse.y"
{ expand_exit_loop_if_false (truthvalue_conversion (yyvsp[-1].ttype));
stmt_decl_msg = "while"; ;
break;}
case 441:
#line 2240 "cplus-parse.y"
{
expand_end_loop ();
stmt_decl_msg = 0;
finish_stmt (); ;
break;}
case 442:
#line 2245 "cplus-parse.y"
{ emit_nop ();
emit_line_note (input_filename, lineno);
expand_start_loop_continue_elsewhere (1);
stmt_decl_msg = "do"; ;
break;}
case 443:
#line 2250 "cplus-parse.y"
{ stmt_decl_msg = 0;
expand_loop_continue_here (); ;
break;}
case 444:
#line 2253 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
expand_exit_loop_if_false (truthvalue_conversion (yyvsp[-2].ttype));
expand_end_loop ();
clear_momentary ();
finish_stmt (); ;
break;}
case 445:
#line 2259 "cplus-parse.y"
{ emit_nop ();
emit_line_note (input_filename, lineno);
if (yyvsp[0].ttype) expand_cplus_expr_stmt (yyvsp[0].ttype);
expand_start_loop_continue_elsewhere (1); ;
break;}
case 446:
#line 2264 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
if (yyvsp[-1].ttype) expand_exit_loop_if_false (truthvalue_conversion (yyvsp[-1].ttype)); ;
break;}
case 447:
#line 2269 "cplus-parse.y"
{ push_momentary ();
stmt_decl_msg = "for"; ;
break;}
case 448:
#line 2272 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
expand_loop_continue_here ();
if (yyvsp[-3].ttype) expand_cplus_expr_stmt (yyvsp[-3].ttype);
pop_momentary ();
expand_end_loop ();
stmt_decl_msg = 0;
finish_stmt (); ;
break;}
case 449:
#line 2280 "cplus-parse.y"
{ emit_nop ();
emit_line_note (input_filename, lineno);
expand_start_loop_continue_elsewhere (1); ;
break;}
case 450:
#line 2284 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
if (yyvsp[-1].ttype) expand_exit_loop_if_false (truthvalue_conversion (yyvsp[-1].ttype)); ;
break;}
case 451:
#line 2289 "cplus-parse.y"
{ push_momentary ();
stmt_decl_msg = "for";
yyvsp[0].itype = lineno; ;
break;}
case 452:
#line 2293 "cplus-parse.y"
{ emit_line_note (input_filename, yyvsp[-2].itype);
expand_loop_continue_here ();
if (yyvsp[-3].ttype) expand_cplus_expr_stmt (yyvsp[-3].ttype);
pop_momentary ();
expand_end_loop ();
pop_implicit_try_blocks (NULL_TREE);
if (yyvsp[-8].itype)
{
register keep = yyvsp[-8].itype > 0;
if (keep) expand_end_bindings (0, keep, 1);
poplevel (keep, 1, 0);
pop_momentary ();
}
stmt_decl_msg = 0;
finish_stmt ();
;
break;}
case 453:
#line 2310 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
c_expand_start_case (yyvsp[-1].ttype);
/* Don't let the tree nodes for $3 be discarded by
clear_momentary during the parsing of the next stmt. */
push_momentary ();
stmt_decl_msg = "switch"; ;
break;}
case 454:
#line 2317 "cplus-parse.y"
{ expand_end_case (yyvsp[-3].ttype);
pop_momentary ();
stmt_decl_msg = 0;
finish_stmt (); ;
break;}
case 455:
#line 2322 "cplus-parse.y"
{ register tree value = yyvsp[-1].ttype;
register tree label
= build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
/* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
Strip such NOP_EXPRs. */
if (TREE_CODE (value) == NOP_EXPR
&& TREE_TYPE (value) == TREE_TYPE (TREE_OPERAND (value, 0)))
value = TREE_OPERAND (value, 0);
if (TREE_READONLY (value) && TREE_CODE (value) == VAR_DECL)
{
value = decl_constant_value (value);
/* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
Strip such NOP_EXPRs. */
if (TREE_CODE (value) == NOP_EXPR
&& TREE_TYPE (value) == TREE_TYPE (TREE_OPERAND (value, 0)))
value = TREE_OPERAND (value, 0);
}
value = fold (value);
if (TREE_CODE (value) != INTEGER_CST
&& value != error_mark_node)
{
error ("case label does not reduce to an integer constant");
value = error_mark_node;
}
else
/* Promote char or short to int. */
value = default_conversion (value);
if (value != error_mark_node)
{
int success = pushcase (value, label);
if (success == 1)
error ("case label not within a switch statement");
else if (success == 2)
error ("duplicate case value");
else if (success == 3)
warning ("case value out of range");
}
define_case_label (label);
;
break;}
case 457:
#line 2366 "cplus-parse.y"
{ register tree value1 = yyvsp[-3].ttype;
register tree value2 = yyvsp[-1].ttype;
register tree label
= build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
if (pedantic)
{
error ("ANSI C does not allow range expressions in switch statement");
value1 = error_mark_node;
value2 = error_mark_node;
break;
}
/* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
Strip such NOP_EXPRs. */
if (TREE_CODE (value1) == NOP_EXPR
&& TREE_TYPE (value1) == TREE_TYPE (TREE_OPERAND (value1, 0)))
value1 = TREE_OPERAND (value1, 0);
if (TREE_READONLY (value1) && TREE_CODE (value1) == VAR_DECL)
{
value1 = decl_constant_value (value1);
/* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
Strip such NOP_EXPRs. */
if (TREE_CODE (value1) == NOP_EXPR
&& TREE_TYPE (value1) == TREE_TYPE (TREE_OPERAND (value1, 0)))
value1 = TREE_OPERAND (value1, 0);
}
value1 = fold (value1);
/* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
Strip such NOP_EXPRs. */
if (TREE_CODE (value2) == NOP_EXPR
&& TREE_TYPE (value2) == TREE_TYPE (TREE_OPERAND (value2, 0)))
value2 = TREE_OPERAND (value2, 0);
if (TREE_READONLY (value2) && TREE_CODE (value2) == VAR_DECL)
{
value2 = decl_constant_value (value2);
/* build_c_cast puts on a NOP_EXPR to make a non-lvalue.
Strip such NOP_EXPRs. */
if (TREE_CODE (value2) == NOP_EXPR
&& TREE_TYPE (value2) == TREE_TYPE (TREE_OPERAND (value2, 0)))
value2 = TREE_OPERAND (value2, 0);
}
value2 = fold (value2);
if (TREE_CODE (value1) != INTEGER_CST
&& value1 != error_mark_node)
{
error ("case label does not reduce to an integer constant");
value1 = error_mark_node;
}
if (TREE_CODE (value2) != INTEGER_CST
&& value2 != error_mark_node)
{
error ("case label does not reduce to an integer constant");
value2 = error_mark_node;
}
if (value1 != error_mark_node
&& value2 != error_mark_node)
{
int success = pushcase_range (value1, value2, label);
if (success == 1)
error ("case label not within a switch statement");
else if (success == 2)
error ("duplicate (or overlapping) case value");
else if (success == 3)
warning ("case value out of range");
else if (success == 4)
warning ("empty range specified");
}
define_case_label (label);
;
break;}
case 459:
#line 2442 "cplus-parse.y"
{
register tree label
= build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
int success = pushcase (NULL_TREE, label);
if (success == 1)
error ("default label not within a switch statement");
else if (success == 2)
error ("multiple default labels in one switch");
;
break;}
case 461:
#line 2453 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
if ( ! expand_exit_something ())
error ("break statement not within loop or switch"); ;
break;}
case 462:
#line 2457 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
if (! expand_continue_loop ())
error ("continue statement not within a loop"); ;
break;}
case 463:
#line 2461 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
c_expand_return (NULL_TREE); ;
break;}
case 464:
#line 2464 "cplus-parse.y"
{ emit_line_note (input_filename, lineno);
c_expand_return (yyvsp[-1].ttype);
finish_stmt ();
;
break;}
case 465:
#line 2469 "cplus-parse.y"
{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
emit_line_note (input_filename, lineno);
expand_asm (yyvsp[-2].ttype);
finish_stmt ();
;
break;}
case 466:
#line 2476 "cplus-parse.y"
{ if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
emit_line_note (input_filename, lineno);
c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
input_filename, lineno);
finish_stmt ();
;
break;}
case 467:
#line 2485 "cplus-parse.y"
{ if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
emit_line_note (input_filename, lineno);
c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
input_filename, lineno);
finish_stmt ();
;
break;}
case 468:
#line 2495 "cplus-parse.y"
{ if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
emit_line_note (input_filename, lineno);
c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
input_filename, lineno);
finish_stmt ();
;
break;}
case 469:
#line 2503 "cplus-parse.y"
{ tree decl;
emit_line_note (input_filename, lineno);
decl = lookup_label (yyvsp[-1].ttype);
TREE_USED (decl) = 1;
expand_goto (decl); ;
break;}
case 470:
#line 2509 "cplus-parse.y"
{ tree label = define_label (input_filename, lineno, yyvsp[-1].ttype);
emit_nop ();
if (label)
expand_label (label); ;
break;}
case 471:
#line 2514 "cplus-parse.y"
{ finish_stmt (); ;
break;}
case 472:
#line 2516 "cplus-parse.y"
{ tree label = define_label (input_filename, lineno, yyvsp[0].ttype);
if (label)
expand_label (label); ;
break;}
case 473:
#line 2520 "cplus-parse.y"
{ finish_stmt (); ;
break;}
case 474:
#line 2522 "cplus-parse.y"
{ finish_stmt (); ;
break;}
case 475:
#line 2526 "cplus-parse.y"
{ expand_cplus_raise (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE);
finish_stmt (); ;
break;}
case 476:
#line 2529 "cplus-parse.y"
{ expand_cplus_raise (yyvsp[-2].ttype, NULL_TREE, NULL_TREE);
finish_stmt (); ;
break;}
case 477:
#line 2532 "cplus-parse.y"
{
tree decl = cplus_expand_end_try (yyvsp[-3].itype);
yyvsp[-2].ttype = current_exception_type;
yyvsp[0].ttype = current_exception_decl;
yyval.ttype = current_exception_object;
cplus_expand_start_except (yyvsp[-1].ttype, decl);
pushlevel (0);
clear_last_expr ();
push_momentary ();
expand_start_bindings (0);
stmt_decl_msg = 0;
;
break;}
case 478:
#line 2545 "cplus-parse.y"
{
tree decls = getdecls ();
/* If there is a default exception to handle,
handle it here. */
if (yyvsp[-1].ttype)
expand_expr (yyvsp[-1].ttype, 0, 0, 0);
expand_end_bindings (decls, decls != 0, 1);
poplevel (decls != 0, 1, 0);
pop_momentary ();
current_exception_type = yyvsp[-5].ttype;
current_exception_decl = yyvsp[-3].ttype;
current_exception_object = yyvsp[-2].ttype;
cplus_expand_end_except (yyvsp[-1].ttype);
;
break;}
case 479:
#line 2560 "cplus-parse.y"
{ tree name = get_identifier ("(compiler error)");
tree orig_ex_type = current_exception_type;
tree orig_ex_decl = current_exception_decl;
tree orig_ex_obj = current_exception_object;
tree decl = cplus_expand_end_try (yyvsp[-2].itype), decls;
/* Start hidden EXCEPT. */
cplus_expand_start_except (name, decl);
pushlevel (0);
clear_last_expr ();
push_momentary ();
expand_start_bindings (0);
stmt_decl_msg = 0;
/* This sets up the reraise. */
expand_cplus_reraise (yyvsp[0].ttype);
decls = getdecls ();
expand_end_bindings (decls, decls != 0, 1);
poplevel (decls != 0, 1, 0);
pop_momentary ();
current_exception_type = orig_ex_type;
current_exception_decl = orig_ex_decl;
current_exception_object = orig_ex_obj;
/* This will reraise for us. */
cplus_expand_end_except (error_mark_node);
if (yychar == YYEMPTY)
yychar = YYLEX;
if (yychar != ';')
error ("missing ';' after reraise statement");
;
break;}
case 480:
#line 2592 "cplus-parse.y"
{ yyerror ("`except' missing after `try' statement");
/* Terminate the binding contour started by special
code in `.pushlevel'. Automagically pops off
the conditional we started for `try' stmt. */
cplus_expand_end_try (yyvsp[0].itype);
expand_end_bindings (0, 0, 1);
poplevel (0, 0, 0);
pop_momentary ();
YYERROR; ;
break;}
case 481:
#line 2604 "cplus-parse.y"
{ yyval.itype = 0; ;
break;}
case 482:
#line 2606 "cplus-parse.y"
{
yyval.itype = 1;
pop_implicit_try_blocks (NULL_TREE);
;
break;}
case 483:
#line 2611 "cplus-parse.y"
{
yyval.itype = 0;
pop_implicit_try_blocks (NULL_TREE);
;
break;}
case 484:
#line 2617 "cplus-parse.y"
{ cplus_expand_start_try (0); ;
break;}
case 486:
#line 2621 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 487:
#line 2623 "cplus-parse.y"
{
tree type = lookup_exception_type (current_class_type, current_class_name, yyvsp[0].ttype);
if (type == NULL_TREE)
{
error ("`%s' is not an exception type",
IDENTIFIER_POINTER (TREE_VALUE (yyvsp[0].ttype)));
current_exception_type = NULL_TREE;
TREE_TYPE (current_exception_object) = error_mark_node;
}
else
{
current_exception_type = type;
/* In-place union. */
TREE_TYPE (current_exception_object) = type;
}
expand_cplus_start_catch (yyvsp[0].ttype);
;
break;}
case 488:
#line 2641 "cplus-parse.y"
{
expand_cplus_end_catch (0);
;
break;}
case 489:
#line 2645 "cplus-parse.y"
{
if (yyvsp[-1].ttype)
error ("duplicate default in exception handler");
current_exception_type = NULL_TREE;
/* Takes it right out of scope. */
TREE_TYPE (current_exception_object) = error_mark_node;
if (! expand_catch_default ())
compiler_error ("default catch botch");
/* The default exception is handled as the
last in the chain of exceptions handled. */
do_pending_stack_adjust ();
start_sequence ();
yyvsp[-1].ttype = make_node (RTL_EXPR);
TREE_TYPE (yyvsp[-1].ttype) = void_type_node;
;
break;}
case 490:
#line 2663 "cplus-parse.y"
{
do_pending_stack_adjust ();
if (! expand_catch (NULL_TREE))
compiler_error ("except nesting botch");
if (! expand_escape_except ())
compiler_error ("except nesting botch");
RTL_EXPR_SEQUENCE (yyvsp[-3].ttype) = (struct rtx_def *)get_insns ();
end_sequence ();
;
break;}
case 491:
#line 2676 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 492:
#line 2678 "cplus-parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ;
break;}
case 493:
#line 2680 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 494:
#line 2685 "cplus-parse.y"
{ yyval.itype = 0; ;
break;}
case 495:
#line 2687 "cplus-parse.y"
{ yyval.itype = 0; ;
break;}
case 496:
#line 2689 "cplus-parse.y"
{ yyval.itype = 1; ;
break;}
case 497:
#line 2691 "cplus-parse.y"
{ yyval.itype = -1; ;
break;}
case 498:
#line 2698 "cplus-parse.y"
{ if (pedantic)
warning ("ANSI C forbids use of `asm' keyword");
emit_line_note (input_filename, lineno); ;
break;}
case 499:
#line 2702 "cplus-parse.y"
{ if (pedantic)
warning ("ANSI C forbids use of `asm' keyword");
emit_line_note (input_filename, lineno); ;
break;}
case 500:
#line 2709 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 502:
#line 2712 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 503:
#line 2718 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 506:
#line 2725 "cplus-parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;}
case 507:
#line 2730 "cplus-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;}
case 508:
#line 2735 "cplus-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
break;}
case 509:
#line 2737 "cplus-parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype); ;
break;}
case 510:
#line 2746 "cplus-parse.y"
{
if (strict_prototype)
yyval.ttype = void_list_node;
else
yyval.ttype = NULL_TREE;
;
break;}
case 511:
#line 2753 "cplus-parse.y"
{
yyval.ttype = chainon (yyvsp[0].ttype, void_list_node);
TREE_PARMLIST (yyval.ttype) = 1;
;
break;}
case 512:
#line 2758 "cplus-parse.y"
{
yyval.ttype = yyvsp[-2].ttype;
TREE_PARMLIST (yyval.ttype) = 1;
;
break;}
case 513:
#line 2764 "cplus-parse.y"
{
yyval.ttype = yyvsp[-1].ttype;
TREE_PARMLIST (yyval.ttype) = 1;
;
break;}
case 514:
#line 2769 "cplus-parse.y"
{
yyval.ttype = NULL_TREE;
;
break;}
case 515:
#line 2773 "cplus-parse.y"
{
yyval.ttype = yyvsp[0].ttype;
TREE_PARMLIST (yyval.ttype) = 1;
;
break;}
case 516:
#line 2778 "cplus-parse.y"
{
yyval.ttype = yyvsp[-1].ttype;
TREE_PARMLIST (yyval.ttype) = 1;
;
break;}
case 517:
#line 2783 "cplus-parse.y"
{
/* This helps us recover from really nasty
parse errors, for example, a missing right
parenthesis. */
yyerror ("possibly missing ')'");
yyval.ttype = chainon (yyvsp[-1].ttype, void_list_node);
TREE_PARMLIST (yyval.ttype) = 1;
yyungetc (':', 0);
yychar = ')';
;
break;}
case 518:
#line 2798 "cplus-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;}
case 519:
#line 2800 "cplus-parse.y"
{ yyval.ttype = chainon (yyvsp[-3].ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-1].ttype)); ;
break;}
case 520:
#line 2802 "cplus-parse.y"
{ yyval.ttype = chainon (yyvsp[-3].ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-1].ttype)); ;
break;}
case 521:
#line 2809 "cplus-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
see_typename (); ;
break;}
case 522:
#line 2812 "cplus-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
see_typename (); ;
break;}
case 523:
#line 2815 "cplus-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
see_typename (); ;
break;}
case 524:
#line 2818 "cplus-parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype);
see_typename (); ;
break;}
case 525:
#line 2823 "cplus-parse.y"
{ see_typename (); ;
break;}
case 526:
#line 2827 "cplus-parse.y"
{ dont_see_typename (); ;
break;}
case 527:
#line 2832 "cplus-parse.y"
{
warning ("type specifier omitted for parameter");
yyval.ttype = build_tree_list (TREE_PURPOSE (TREE_VALUE (yyvsp[-3].ttype)), yyvsp[0].ttype);
;
break;}
case 528:
#line 2837 "cplus-parse.y"
{
warning ("type specifier omitted for parameter");
yyval.ttype = build_tree_list (TREE_PURPOSE (TREE_VALUE (yyvsp[-3].ttype)), yyvsp[0].ttype);
;
break;}
case 529:
#line 2846 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 530:
#line 2848 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 531:
#line 2853 "cplus-parse.y"
{ yyval.ttype = NULL_TREE; ;
break;}
case 532:
#line 2855 "cplus-parse.y"
{ yyval.ttype = yyvsp[0].ttype; ;
break;}
case 533:
#line 2860 "cplus-parse.y"
{ yyval.ttype = void_list_node; ;
break;}
case 534:
#line 2862 "cplus-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 535:
#line 2864 "cplus-parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ttype); ;
break;}
case 536:
#line 2866 "cplus-parse.y"
{ yyval.ttype = build_decl_list (void_type_node, yyvsp[0].ttype); ;
break;}
case 537:
#line 2868 "cplus-parse.y"
{ yyval.ttype = build_decl_list (void_type_node, yyvsp[0].ttype); ;
break;}
case 538:
#line 2870 "cplus-parse.y"
{ yyval.ttype = build_decl_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 539:
#line 2872 "cplus-parse.y"
{ yyval.ttype = build_decl_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;}
case 541:
#line 2877 "cplus-parse.y"
{
TREE_CHAIN (yyvsp[0].ttype) = yyvsp[-2].ttype;
yyval.ttype = yyvsp[0].ttype;
;
break;}
case 542:
#line 2885 "cplus-parse.y"
{ yyval.ttype = build_opid (0, MULT_EXPR); ;
break;}
case 543:
#line 2887 "cplus-parse.y"
{ yyval.ttype = build_opid (0, TRUNC_DIV_EXPR); ;
break;}
case 544:
#line 2889 "cplus-parse.y"
{ yyval.ttype = build_opid (0, TRUNC_MOD_EXPR); ;
break;}
case 545:
#line 2891 "cplus-parse.y"
{ yyval.ttype = build_opid (0, PLUS_EXPR); ;
break;}
case 546:
#line 2893 "cplus-parse.y"
{ yyval.ttype = build_opid (0, MINUS_EXPR); ;
break;}
case 547:
#line 2895 "cplus-parse.y"
{ yyval.ttype = build_opid (0, BIT_AND_EXPR); ;
break;}
case 548:
#line 2897 "cplus-parse.y"
{ yyval.ttype = build_opid (0, BIT_IOR_EXPR); ;
break;}
case 549:
#line 2899 "cplus-parse.y"
{ yyval.ttype = build_opid (0, BIT_XOR_EXPR); ;
break;}
case 550:
#line 2901 "cplus-parse.y"
{ yyval.ttype = build_opid (0, BIT_NOT_EXPR); ;
break;}
case 551:
#line 2903 "cplus-parse.y"
{ yyval.ttype = build_opid (0, yyvsp[0].code); ;
break;}
case 552:
#line 2905 "cplus-parse.y"
{ yyval.ttype = build_opid (0, yyvsp[0].code); ;
break;}
case 553:
#line 2907 "cplus-parse.y"
{ yyval.ttype = build_opid (MODIFY_EXPR, yyvsp[0].code); ;
break;}
case 554:
#line 2909 "cplus-parse.y"
{
yyval.ttype = build_opid (MODIFY_EXPR, NOP_EXPR);
if (current_class_type)
{
TYPE_HAS_ASSIGNMENT (current_class_type) = 1;
TYPE_GETS_ASSIGNMENT (current_class_type) = 1;
}
;
break;}
case 555:
#line 2918 "cplus-parse.y"
{ yyval.ttype = build_opid (0, yyvsp[0].code); ;
break;}
case 556:
#line 2920 "cplus-parse.y"
{ yyval.ttype = build_opid (0, yyvsp[0].code); ;
break;}
case 557:
#line 2922 "cplus-parse.y"
{ yyval.ttype = build_opid (0, POSTINCREMENT_EXPR); ;
break;}
case 558:
#line 2924 "cplus-parse.y"
{ yyval.ttype = build_opid (0, PREDECREMENT_EXPR); ;
break;}
case 559:
#line 2926 "cplus-parse.y"
{ yyval.ttype = build_opid (0, TRUTH_ANDIF_EXPR); ;
break;}
case 560:
#line 2928 "cplus-parse.y"
{ yyval.ttype = build_opid (0, TRUTH_ORIF_EXPR); ;
break;}
case 561:
#line 2930 "cplus-parse.y"
{ yyval.ttype = build_opid (0, TRUTH_NOT_EXPR); ;
break;}
case 562:
#line 2932 "cplus-parse.y"
{ yyval.ttype = build_opid (0, COND_EXPR); ;
break;}
case 563:
#line 2934 "cplus-parse.y"
{ yyval.ttype = build_opid (0, yyvsp[0].code); ;
break;}
case 564:
#line 2936 "cplus-parse.y"
{ yyval.ttype = build_opid (0, COMPONENT_REF); ;
break;}
case 565:
#line 2938 "cplus-parse.y"
{
if (yychar == YYEMPTY)
yychar = YYLEX;
if (yychar == '(' || yychar == LEFT_RIGHT)
{
yyval.ttype = build_opid (0, METHOD_CALL_EXPR);
if (current_class_type)
{
tree t = current_class_type;
while (t)
{
TYPE_OVERLOADS_METHOD_CALL_EXPR (t) = 1;
t = TYPE_NEXT_VARIANT (t);
}
}
}
else
yyval.ttype = build_parse_node (CALL_EXPR, build_opid (0, COMPONENT_REF), void_list_node, yyvsp[0].ttype);
;
break;}
case 566:
#line 2958 "cplus-parse.y"
{ yyval.ttype = build_opid (0, CALL_EXPR);
if (current_class_type)
{
tree t = current_class_type;
while (t)
{
TYPE_OVERLOADS_CALL_EXPR (t) = 1;
t = TYPE_NEXT_VARIANT (t);
}
}
;
break;}
case 567:
#line 2970 "cplus-parse.y"
{ yyval.ttype = build_opid (0, ARRAY_REF);
if (current_class_type)
{
tree t = current_class_type;
while (t)
{
TYPE_OVERLOADS_ARRAY_REF (t) = 1;
t = TYPE_NEXT_VARIANT (t);
}
}
;
break;}
case 568:
#line 2982 "cplus-parse.y"
{
yyval.ttype = build_opid (0, NEW_EXPR);
if (current_class_type)
{
tree t = current_class_type;
while (t)
{
TREE_GETS_NEW (t) = 1;
t = TYPE_NEXT_VARIANT (t);
}
}
;
break;}
case 569:
#line 2995 "cplus-parse.y"
{
yyval.ttype = build_opid (0, DELETE_EXPR);
if (current_class_type)
{
tree t = current_class_type;
while (t)
{
TREE_GETS_DELETE (t) = 1;
t = TYPE_NEXT_VARIANT (t);
}
}
;
break;}
case 570:
#line 3011 "cplus-parse.y"
{
yyval.ttype = build1 (TYPE_EXPR, yyvsp[-1].ttype, yyvsp[0].ttype);
;
break;}
case 571:
#line 3015 "cplus-parse.y"
{ yyval.ttype = build_opid (ERROR_MARK, ERROR_MARK); ;
break;}
}
/* the action file gets copied in in place of this dollarsign */
#line 408 "bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
#ifdef YYLSP_NEEDED
yylsp -= yylen;
#endif
#ifdef YYDEBUG
if (yydebug)
{
short *ssp1 = yyss - 1;
fprintf (stderr, "state stack now");
while (ssp1 != yyssp)
fprintf (stderr, " %d", *++ssp1);
fprintf (stderr, "\n");
}
#endif
*++yyvsp = yyval;
#ifdef YYLSP_NEEDED
yylsp++;
if (yylen == 0)
{
yylsp->first_line = yylloc.first_line;
yylsp->first_column = yylloc.first_column;
yylsp->last_line = (yylsp-1)->last_line;
yylsp->last_column = (yylsp-1)->last_column;
yylsp->text = 0;
}
else
{
yylsp->last_line = (yylsp+yylen-1)->last_line;
yylsp->last_column = (yylsp+yylen-1)->last_column;
}
#endif
/* Now "shift" the result of the reduction.
Determine what state that goes to,
based on the state we popped back to
and the rule number reduced by. */
yyn = yyr1[yyn];
yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
yystate = yydefgoto[yyn - YYNTBASE];
goto yynewstate;
yyerrlab: /* here on detecting error */
if (! yyerrstatus)
/* If not already recovering from an error, report this error. */
{
++yynerr;
yyerror("parse error");
}
if (yyerrstatus == 3)
{
/* if just tried and failed to reuse lookahead token after an error, discard it. */
/* return failure if at end of input */
if (yychar == YYEOF)
YYABORT;
#ifdef YYDEBUG
if (yydebug)
fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
#endif
yychar = YYEMPTY;
}
/* Else will try to reuse lookahead token
after shifting the error token. */
yyerrstatus = 3; /* Each real token shifted decrements this */
goto yyerrhandle;
yyerrdefault: /* current state does not do anything special for the error token. */
#if 0
/* This is wrong; only states that explicitly want error tokens
should shift them. */
yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
if (yyn) goto yydefault;
#endif
yyerrpop: /* pop the current state because it cannot handle the error token */
if (yyssp == yyss) YYABORT;
yyvsp--;
yystate = *--yyssp;
#ifdef YYLSP_NEEDED
yylsp--;
#endif
#ifdef YYDEBUG
if (yydebug)
{
short *ssp1 = yyss - 1;
fprintf (stderr, "Error: state stack now");
while (ssp1 != yyssp)
fprintf (stderr, " %d", *++ssp1);
fprintf (stderr, "\n");
}
#endif
yyerrhandle:
yyn = yypact[yystate];
if (yyn == YYFLAG)
goto yyerrdefault;
yyn += YYTERROR;
if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
goto yyerrdefault;
yyn = yytable[yyn];
if (yyn < 0)
{
if (yyn == YYFLAG)
goto yyerrpop;
yyn = -yyn;
goto yyreduce;
}
else if (yyn == 0)
goto yyerrpop;
if (yyn == YYFINAL)
YYACCEPT;
#ifdef YYDEBUG
if (yydebug)
fprintf(stderr, "Shifting error token, ");
#endif
*++yyvsp = yylval;
#ifdef YYLSP_NEEDED
*++yylsp = yylloc;
#endif
yystate = yyn;
goto yynewstate;
}
#line 3018 "cplus-parse.y"
#if YYDEBUG != 0
db_yyerror (s, yyps, yychar)
char *s;
short *yyps;
int yychar;
{
FILE *yyout;
char buf[1024];
int st;
yyerror (s);
printf ("State is %d, input token number is %d.\n", *yyps, yychar);
#ifdef PARSE_OUTPUT
if (*yyps < 1) fatal ("Cannot start from here");
else if ((yyout = fopen (PARSE_OUTPUT, "r")) == NULL)
error ("cannot open file %s", PARSE_OUTPUT);
else
{
printf ("That is to say,\n\n");
while (fgets(buf, sizeof (buf)-1, yyout))
{
if (buf[0] != 's') continue;
st = atoi (buf+6);
if (st != *yyps) continue;
printf ("%s", buf);
while (fgets (buf, sizeof (buf)-1, yyout))
{
if (buf[0] == 's') break;
printf ("%s", buf);
}
break;
}
printf ("With the token %s\n", yytname[YYTRANSLATE (yychar)]);
fclose (yyout);
}
#endif
}
#endif
void
yyerror (string)
char *string;
{
extern FILE *finput;
extern char *token_buffer;
char buf[200];
strcpy (buf, string);
/* We can't print string and character constants well
because the token_buffer contains the result of processing escapes. */
if (end_of_file || feof (finput))
strcat (buf, " at end of input");
else if (token_buffer[0] == 0)
strcat (buf, " at null character");
else if (token_buffer[0] == '"')
strcat (buf, " before string constant");
else if (token_buffer[0] == '\'')
strcat (buf, " before character constant");
else
strcat (buf, " before `%s'");
error (buf, token_buffer);
}
static int *reduce_count;
static int *token_count;
#define REDUCE_LENGTH (sizeof (yyr2) / sizeof (yyr2[0]))
#define TOKEN_LENGTH (256 + YYNTBASE + 1)
int *
init_parse ()
{
#ifdef GATHER_STATISTICS
reduce_count = (int *)malloc (sizeof (int) * (REDUCE_LENGTH + 1));
bzero (reduce_count, sizeof (int) * (REDUCE_LENGTH + 1));
reduce_count += 1;
token_count = (int *)malloc (sizeof (int) * TOKEN_LENGTH);
bzero (token_count, sizeof (int) * TOKEN_LENGTH);
#endif
return token_count;
}
#ifdef GATHER_STATISTICS
void
yyhook (yyn)
int yyn;
{
reduce_count[yyn] += 1;
}
#endif
static int reduce_cmp (p, q)
int *p, *q;
{
return reduce_count[*q] - reduce_count[*p];
}
static int token_cmp (p, q)
int *p, *q;
{
return token_count[*q] - token_count[*p];
}
void
print_parse_statistics ()
{
int i;
int maxlen = REDUCE_LENGTH;
unsigned *sorted;
if (reduce_count[-1] == 0)
return;
if (TOKEN_LENGTH > REDUCE_LENGTH)
maxlen = TOKEN_LENGTH;
sorted = (unsigned *) alloca (sizeof (int) * maxlen);
for (i = 0; i < TOKEN_LENGTH; i++)
sorted[i] = i;
qsort (sorted, TOKEN_LENGTH, sizeof (int), token_cmp);
for (i = 0; i < TOKEN_LENGTH; i++)
{
int index = sorted[i];
if (token_count[index] == 0)
break;
if (token_count[index] < token_count[-1])
break;
fprintf (stderr, "token %d", index);
#if YYDEBUG
fprintf (stderr, ", `%s'", yytname[YYTRANSLATE (index)]);
#endif
fprintf (stderr, ", count = %d\n", token_count[index]);
}
fprintf (stderr, "\n");
for (i = 0; i < REDUCE_LENGTH; i++)
sorted[i] = i;
qsort (sorted, REDUCE_LENGTH, sizeof (int), reduce_cmp);
for (i = 0; i < REDUCE_LENGTH; i++)
{
int index = sorted[i];
if (reduce_count[index] == 0)
break;
if (reduce_count[index] < reduce_count[-1])
break;
fprintf (stderr, "rule %d", index);
#if YYDEBUG
fprintf (stderr, ", line %d", yyrline[index]);
#endif
fprintf (stderr, ", count = %d\n", reduce_count[index]);
}
fprintf (stderr, "\n");
}